有下列程序  #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,

admin2022-04-02  39

问题 有下列程序
 #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。通过临时变量t交换a和b指向的值,此时a指向的实参i,b指向的实参j的值发生了交换,即a指向i的值为7,b指向j的值为3;再通过临时变量tp交换a和b的指针值,使得a指向j,b指向i。所以swap印中输出a指向的值为3(j),b指向的值为7(i);swap函数调用结束后,输出p和q指向的值,即i,j的值7,3,所以程序输出:3,7,7,3,本题答案C选项。
转载请注明原文地址:https://jikaoti.com/ti/IOd0FFFM
0

最新回复(0)