作者usisiu (LOOK)
看板Examination
标题[课业] C++ 程式指标 疑问
时间Sun May 6 10:16:40 2018
题目出处:第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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 192.83.186.60
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Examination/M.1525573003.A.7C7.html
※ 编辑: usisiu (192.83.186.60), 05/06/2018 10:17:05
1F:推 onlyu0402: 1.传参考会让变数b和y互为别名,两者共享同一块记忆体 05/06 10:49
2F:→ onlyu0402: 空间 05/06 10:49
3F:推 onlyu0402: 2.一进入func函数中,z就改指向x了,故c只是用来执行 05/06 10:52
4F:→ onlyu0402: 函数所传递的参数,没更动到。 05/06 10:52
感谢,原来 z 只是改指标
※ 编辑: usisiu (114.42.105.93), 05/06/2018 16:51:27
5F:推 hsr336526: 借问原po知道填空第四题为什麽是4吗 05/07 10:59
6F:推 onlyu0402: 鸡婆回楼上,C或C++中{}所包括范围为一个scope 05/07 22:41
7F:→ onlyu0402: 第一个int a=2为全域变数、第二个a=4是main中的区域变 05/07 22:42
8F:→ onlyu0402: 数,第三个int a=6为if中的区域变数。 05/07 22:43
9F:→ onlyu0402: 故不论if条件成立与否,print出来的都是第二个整数a 05/07 22:45
10F:→ onlyu0402: (注意三个开头都有int,都是新宣告的叙述) 05/07 22:49
11F:推 hsr336526: 感谢o大回应 05/07 23:48