【发布时间】:2021-12-07 14:05:31
【问题描述】:
我想知道是否有人可以解释为什么 f2(a,a);是 13 13 而不是 12 12?
这和&符号有关系吗,如果有,是什么意思?
提前致谢!
#include <iostream>
using namespace std;
void f1 (int a, int b){
a = 12; b = 13;
}
void f2 (int& a, int& b){
a = 12; b = 13;
}
int main()
{
int a = 10; int b = 11;
f1(a,b);
cout << a << ' ' << b << ' ';
f2(a,b);
cout << a << ' ' << b << ' ';
f2(a,a);
cout << a << ' ' << b;
}
【问题讨论】:
-
你能解释一下为什么你期望它是
12 12吗? -
因为在 void f2 a 是 12,这就是为什么我期望它是 12
-
您将
a传递给f2的a和b变量。这些是通过引用传递的。当它在f2函数中执行a = 12时,您确实也将a的值从main更改为12;但是,紧接着,它会执行b=13,其中b仍然是与a相同的变量。请注意,main内的变量a和b与f2内的a和b不同。
标签: c++ c++11 pass-by-reference