![](/img/trans.png)
[英]In function ‘int main(int, char**), ‘MIN’ was not declared
[英]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()
。 將a
從main
傳遞給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.