当您调用函数时,如果传递给函数的参数不是数组,或者不是有意使用与符号 ( ) 进行引用传递,则这些参数将按值传递&。例如,
void boo (int a, int b) {}
int main() {
int var1 {1};
int var2 {2};
boo(var1,var2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,整型变量var1和的值var2被复制到函数参数a和 ,b并存储在为函数分配的堆栈帧中boo()。我的问题是:
如果我写
void boo (int a, int b) {}
int main() {
boo(1,2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
是整数文字1并且2不存储在main()堆栈帧中,因为它们现在是右值?
如果我改为写
void boo (int &a, int &b) {}
int main() {
int var1{1};
int var2{2};
boo(var1,var2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
是参数 …