void func(int x) {
x = 2;
}
int main()
{
int x = 3;
func(x);
cout << "x = " << x << endl;
return 0;
}
我希望现在的结果是2.为什么不发生这种情况?一个简单的解释,因为我才开始学习c ++。你能解释为什么以下产生5:
void func(int x)
{
x = 2;
}
void function(int *x)
{
*x = 5;
}
int main()
{
int x = 3;
func(x);
function(&x);
cout << "x = "<< x << endl;
return 0;
}
答案 0 :(得分:1)
我希望结果是2.为什么不发生这种情况?
因为您通过值传递,所以参数只是原始参数的副本 - 因此,x
中的任何更改func
都不会影响{{1}中的原始x
}}
当您需要更改函数内部的参数时,C ++通过引用传递正是您所需要的:
main
与编辑一样:
void func(int &x)
{
x = 2;
}
这是传递指针 - 如果您将指针传递给void function(int *x)
,则可以在x
中间接更改x
。这通常在C中使用,但是当您使用C ++ pass-by-reference时,因为上面是首选方法。