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

admin2020-11-23  24

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

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

答案A

解析 考查指针与函数。虽然该函数进行的是地址传参,但只是改变了指针的指向,对原指向的数据并没有改变,该函数仍然可以看做是值传递,即形参指针指向的变化不会影响到实参指针的指向。所以在函数sp()中的输出结果为4,而指针p的指向以及k的值仍然没有改变,答案选A。
转载请注明原文地址:https://kaotiyun.com/show/tS3p777K
0

最新回复(0)