簡體   English   中英

如何訪問在另一個函數中的 main 中聲明的 int a?

[英]How to access int a declared in main in another function?

#include <iostream>    
using namespace std;

void b();

int main() {

    int a = 10;
    b(); 
}

void b() {
    int a;
    cout<<"Int a="<<a;
}

我期待打印的值a使用功能主要適用范圍,以我目前的代碼,它打印Int a=0 我怎樣才能做到這一點?

不要在b()聲明一個全新a b() amain傳遞給b()然后打印出來。

例如:

#include <iostream>

void b(int whatever_name_you_want_here);

int main()
{
    int a = 10;
    b(a);
}

void b(int whatever_name_you_want_here)
{
    std::cout << "Int a=" << whatever_name_you_want_here;
}

//將您的代碼更改為以下內容,它將為您提供您正在尋找的結果。 在您的代碼中,無法將 main 上的 int a 傳遞給 b(); 除非 b 接受您希望函數輸出的類型的參數。

#include<iostream>
 
void b(int);

int main()

{

    int a = 10;
    b(a);
}
void b(int a){
    std::cout << "int a=" << a;
}

您想要實現的目標要求您將值傳遞給函數。 讓我舉一個例子來說明如何做到這一點。

#include<iostream>

void print_value(int value){
    std::cout << "Value is: " << value << '\n';
}

int main(){

    int a = 5;
    print_value(a);
    return 0;
}

程序中唯一缺少的是參數。 我不會費心在這里解釋整個事情,因為網上有很多文章。 這是一個簡單的。 請參閱此以了解函數在 C++ 中的工作原理

我想主要問題是沒有意識到稱為范圍的非常重要的東西! 作用域通常由{打開並由}關閉

除非您創建一個全局變量,否則它只會在它被引入(聲明)的范圍內被知道。

您在全局范圍內聲明了函數b

void b();

所以在此之后,包括main在內的所有其他功能都知道並可以使用它。

但是您在main的范圍內聲明了變量a

    int a = 5;

所以只有 main 知道它並且可以使用它。

請注意,與其他一些編程語言不同,名稱不是唯一的,並且程序的每個部分都無法在 c 和 c++ 中識別它們。 所以部分:

void b() {
    int a;

不會強制函數b識別在main函數中聲明的a並且它是一個新的a

所以要糾正這個錯誤,只需將變量a的值或引用a給函數b

#include <iostream>    

void b(int&);

int main() {
    int a = 10;
    b(a); 
}

void b(int& a) {
    std::cout << "Int a=" << a << std::endl;
}

也請注意, a作為函數的自變量b是不一樣的a在功能main 最后一個提示是函數的每個參數在函數作用域內都是已知的,因為它是在函數作用域內聲明的!

#include <iostream>

using namespace std;

void displayValue(int number) {
    cout<<"Number is = "<<number;
}

int main()
{
    int myValue = 77;
    displayValue(myValue);

    return 0;
}

使用按引用傳遞來訪問在另一個函數中聲明的變量。 參考以下代碼了解引用變量的使用,

void swapNums(int &x, int &y) {
  int z = x;
  x = y;
  y = z;
}

int main() {
  int firstNum = 10;
  int secondNum = 20;

  cout << "Before swap: " << "\n";
  cout << firstNum << secondNum << "\n";

  // Call the function, which will change the values of firstNum and secondNum
  swapNums(firstNum, secondNum);

  cout << "After swap: " << "\n";
  cout << firstNum << secondNum << "\n";

  return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM