【问题标题】:Why is the output not considering the function?为什么输出不考虑函数?
【发布时间】:2017-04-26 04:59:57
【问题描述】:
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;
}

【问题讨论】:

标签: c++ function


【解决方案1】:

我预计输出为 2。为什么没有发生这种情况?

因为您是按值传递,所以参数只是原始参数的副本 - 所以无论您在 func 中更改 x 都不会影响 main 中的原始 x

由于您需要更改函数内部的参数,因此通过引用传递 C++ 正是您所需要的:

void func(int &x)
{
    x = 2;
}

与您的编辑一样:

void function(int *x)

即传递指针——如果你传递一个指向x的指针,你可以在main中间接改变x。这通常在 C 中使用,但由于您使用的是 C++ 引用传递,因此上述方法是首选方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2013-05-17
    相关资源
    最近更新 更多