【发布时间】:2021-05-27 08:25:45
【问题描述】:
我正在学习函数、引用和全局变量。 我有以下代码:
#include <iostream>
using namespace std;
int x;
void f(){ x = 2;}
void g(int &x){ f(); }
int main() {
int x=5;
g(x);
cout<<x;
}
为什么我没有得到 2 作为输出?由于 x 在 g() 内部发生变化,我希望该值会被保留。
【问题讨论】:
-
cout<<x;正在打印出在main()中定义的本地x。更改为cout<<::x;打印出全局x。 -
因为
f()将全局x更改为main(),而不是将本地更改为main(),并且main()将本地更改为main()。main()通过引用将其本地x传递给g()的事实,或者g()的参数也被命名为x的事实并没有改变这一点。g()不会更改作为参数传递给它的值,因为它(和f())从不使用该参数。要从main()打印全局x,请将本地x重命名为其他名称,或打印::x。
标签: c++ function reference global