首页 > 解决方案 > ++ 后面关于引用和作为返回值的语法逻辑

问题描述

int f3(int i, int j) {
    int& k = i;
    ++j;
    return ++k;
}
int main()
{
    int i = 2, j = 4, k;
    k = f3(i, j);
    cout << "i: " << i << " j: " << j << " k: " << k << endl;
    return 0;
}

为什么我得到i = 2k = 3。我的意思肯定是因为我已经设置int& k = i了,所以 i 和 k 本质上都是同一个变量,因为它们共享相同的内存空间。谁能用简单的英语解释一下为什么这么简单?或者我不明白什么?

标签: c++referencepass-by-reference

解决方案


在这里你设置i2

int i=2,

在这里你通过i

k=f3(i,j);

但是,您传递的副本i

int f3(int i, int j) // you need a "&" in here too if you want to pass the reference

所以在这一行:

int& k = i;

您设置k. i因此,当您更改它时,实际i的 frommain不会更改。

相反,试试这个:

int f3(int &i, int j) { // now you're pssing a reference to i, not a copy thereof

你的输出i值为3. 有关引用调用的一个很好的示例,请参见此处


推荐阅读