为什么输出不考虑功能?

时间:2016-12-11 01:14:02

标签: c++ function

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;
}

1 个答案:

答案 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时,因为上面是首选方法。