有下列程序: #include<stdio.h> void swap(int*a,int*b) { int*tp,t; t=*a;*a=*b;*b=t; tp=a;a=b;b=tp;

admin2022-10-25  17

问题 有下列程序:
     #include<stdio.h>
     void swap(int*a,int*b)
     {
       int*tp,t;
       t=*a;*a=*b;*b=t;
       tp=a;a=b;b=tp;
       printf(”%d,%d,”,*a,*b);
     }
     main()
     {
       int i=3,j=7,*p=&i,*q=&j;
       swap(&i,&j);
       printf(”%d,%d”,*p,*q);
     }
     程序执行后的输出结果是(          )。

选项 A、3,7,3,7
B、7,3,7,3
C、3,7,7,3
D、7,3,3,7

答案 C

解析 程序定义两个整型变量i、j,初值为3,7。另外,定义两个整型指针变量p、q,其中p指向i,q指向j。将i、j的地址传给swap函数。在swap函数中,a指向i,b指向j。通过I临时变量t交换a和b指向的值,此时a指向的实参i、b指向的实参j的值发生了交换。即a指向i的值为7,b指向j的值为3;再通过临时变量tp交换a和b的指针值,使得a指向j,b指向i。所以sw印函数中输出a指向的值为3(j),b指向的值为7(i);swap函数调用结束后,输出p和q指向的值,即i、j的值为7、3。所以程序输出:3,7,7,3。本题答案为C选项。
转载请注明原文地址:https://kaotiyun.com/show/cCkp777K
0

最新回复(0)