大一,刚学c++的问题,指针啥的

img


答案是 16 9 7
我怎么是18 11 9呢,为什么不用++呢?
这是咋搞出来的啊,在这里谢谢各位了!

函数里只会改变c,ab不变
abc 一开始是2 5 8
第一个函数执行之后 2 5 7
第二个函数执行之后 2 9 7
第三个函数执行之后 16 9 7
所以是 16 9 7

#include <iostream>
using namespace std;

void fun(int x, int y, int * z)
{
    *z = x + y;
    x++;
    y++;
}
int main()
{
    int a(2), b(5),c(8);
    fun(a,b,&c);
    fun(c,a,&b);
    fun(b,c,&a);
    cout << a << " "<< b << " " << c << endl;
}

img

上机验证

因为参数传递分为 值传递和引用传递 ;值传递在函数是拷贝副本,在函数里修改,不会影响原来的值,修改的只是副本;引用传递相当于对变量取别名,相当于指针,只有一份原始值,对原始值修改会影响原来的值