执行下面程序后,输出为( )。 void fun(int a, int &b, int *c){ a += 1; b += 2; *c += 3; } int main(){ int x = 1, y = 1, z = 1; fun(x, y, &z); cout << x << " " << y << " " << z;
A:2 3 4
B:1 3 4
C:2 1 4
D:1 1 1
正确答案:B
答案解析
分析函数fun的参数传递方式:a为值传递,形参变化不影响实参;b为引用传递,形参修改直接作用于实参;c为指针传递,通过解引用可修改实参所指向的内存。在main函数中,x、y、z初始均为1,调用fun时,x传值,y传引用,z取地址传入。函数内对a的操作不影响x;对b的操作直接影响y;对*c的操作修改z的值。函数执行过程中,各参数按其传递机制独立作用于对应变量。
试卷来源:202603 CCF-GESP编程能力等级认证C++四级真题