![](/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.