如何在另一个函数中访问 main 中声明的 int?


#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。 将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;
}

//将您的代码更改为以下内容,它将为您提供所需的结果。 在您的代码中,无法将主上的 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;
}

我想主要问题是没有意识到一些非常重要的东西,称为范围!示波器通常由{打开,由}关闭

除非创建全局变量,否则它仅在引入(声明)的作用域内是已知的。

您在全局范围内声明了函数b

void b();

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

但是您在main范围内声明了变量a

int a = 5;

所以只有主知道它并可以使用它。

请注意,与其他一些编程语言不同,名称不是唯一的,并且并非程序的每个部分都能在 c 和 c++ 中识别它们。 所以部分:

void b() {
int a;

不强制函数b识别在函数中声明maina,它是一个新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;
}

另请注意,函数baas 参数与函数main中的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++中的工作方式

使用引用传递来访问在一个函数中声明的变量。 参考下面的代码来了解引用变量的使用,

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;
}
#include <iostream>
using namespace std;
void displayValue(int number) {
cout<<"Number is = "<<number;
}
int main()
{
int myValue = 77;
displayValue(myValue);
return 0;
}

最新更新