A-A+
若有以下程序 include<stdio.h> intk=7 m=5; yoidflint*
问题详情
若有以下程序 include<stdio.h> intk=7,m=5; yoidflint**S){ int*t=&k: s=&t;*s=&m; printf(%d,%d,%d,,k,*t,**s);} main(){ inti=3,*p=&i,**r=&p; fir); printf(%d,%d,%dn,i,*P,**r);} 则程序的输出结果是
A.7,5,7,3,3,3,
B.7,5,7,3,5,7,
C.7,5,5,3,3,3,
D.7,7,5,3,3,3
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:C
本题考查二级指针作为函数的参数,可以通过函数调用来改变主函数中一级指针的指向。主函数中指针变量p指向i,r指向p,调用f函数,形参指针s指向p,流程转到f函数执行,指针变量指向k,s指向t,此时更改了s的指i,uj,s指向了t,更改了s指向的地址空间内容为m的地址,同时t也指向变量m,因此**s的值为m的值,*t为m的值,k为7。流程返回到主函数,没有对主函数空间的数据和指向作出更改,因此全部为3。