题目出处:第4次全国各级农会-新进九职等以下-程式设计 (填充题 第3题)
https://i.imgur.com/qoZ2n9x.png
题目:
#include <iostream>
using namespace std;
int func(int x,int& y,int *z)
{
x=x+1;
y=y+2;
z=&x;
retuen x+y+*z; //我算出来的x=3,y=6,*z=3,与答案相同
}
int main()
{
int a=2,b=4,c=6;
printf("ANS1=%d",func(a,b,&c));
//我算出来的a=2,b=6,c=3,答案为a=2,b=6,c=6
printf("\ANS2=%d",a+b+c);
return 0;
}
答案(执行的输出结果):
ANS1=12
ANS2=14
我算出来得答案为:
ANS1=12
ANS2=11
疑问点:
传参考和传址,不是都共用同一块内存吗?
为何 y=y+2; ,会更改到 b 的值,
而 z=&x; , c 的值还是维持在原本的 6 ?
https://i.imgur.com/c1i007A.png