若有以下程序 #include int k=7,m=5: void f(int*s){ int*t=&k; s=&t;*s=&m; printf("%d,%d,%d,",k,*t,*s);} main(){ int i=3,*p=&i,*r=&p; f(r

admin2015-12-25  30

问题 若有以下程序
#include
int k=7,m=5:
void f(int*s){
int*t=&k;
s=&t;*s=&m;
printf("%d,%d,%d,",k,*t,*s);}
main(){
int i=3,*p=&i,*r=&p;
f(r);
printf("%d,%d,%d\n",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函数执行,指针变量t指向k,s指向t,此时更改了s的指向, s指向了t,更改了s指向的地址空间内容为m的地址,同时t也指向变量m,因此*s的值为m的值,*t为m的值,k为7。流程返回到主函数,没有对主函数空间的数据和指向作出更改,因此全部为3。
转载请注明原文地址:https://jikaoti.com/ti/GBi0FFFM
0

最新回复(0)