A-A+

若有以下程序 include<stdio.h> yoidsp(int*a){ intb=2:

2022-08-12 18:44:33 问答库 阅读 197 次

问题详情

若有以下程序 include<stdio.h> yoidsp(int*a){ intb=2: a=&b: *a=*a*2: printf(%d,,*a);} main(){intk=3,*P=&k; sp(p); printf(%d,%dn,k,*p);) 则程序的输出结果是
A.4,3,4
B.4,3,3
C.6,3,6
D.6,6,6

请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:B
土函数中定义指针变量p指向k,调用函数sp(p),将k的地址传递给形参指针a,函数转到sp运行,a指向b的地址,表达式*a=*a*2,相当于b=b*2,得到*a的数据4输出。函数调用结束,此时a和b的空间撤销,而对实参k和p的值并没有改变,仍旧是3。

考点:程序