若有以下程序 #include void sp(int *a) { int b=2; *a = *a * 2; printf("%d,", *a); a=&b; *a = *a * 2; printf("%d,", *a); } main() { i

admin2015-07-28  19

问题 若有以下程序
#include
void sp(int *a)
{ int b=2;
*a = *a * 2; printf("%d,", *a);
a=&b; *a = *a * 2; printf("%d,", *a);
}
main()
{ int k=3;
sp(&k); printf("%d\n", k);
}
则程序的输出结果是( )。

选项 A、6,4,6
B、6,4,3
C、6,12,12
D、9,4,9

答案A

解析 考查地址传参。地址传参过程中,实参和形参指向同一段地址空间,所以指向的变量的变化保持同步,但是指向的地址空间实参不会随着形参的变化而变化。函数sp()中,*a为3,所以第一次输出值为6;之后*a指向变量b的地址,所以输出结果为4,*a指向的变化不能改变k的地址,所以k值为6,答案选A。
转载请注明原文地址:https://kaotiyun.com/show/E7Jp777K
0

最新回复(0)