有以下程序  #include <stdio.h>  void swap(int *a,int *b)  {int t,*tp;   t=*a;*a=*b;*b=t;   tp=a;a=b;b=tp;   printf("%d,%d,",*a,

admin2022-04-01  19

问题 有以下程序
 #include <stdio.h>
 void swap(int *a,int *b)
 {int t,*tp;
    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(p,q);
    printf("%d,%d,%d,%d",i,j,*P,*q);
 }
 程序执行后的输出结果是(          )。

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

答案D

解析 main()函数中,首先定义两个整型变量i和j,初值为3和7,并将i的地址赋给p,j的地址赋给q,传给swap()函数。swap()函数接收两个整型指针变量a,b,然后使用整型变量t交换a、b所指向的值并输出。通过指针变量的交换改变了实参i、j的值,使得i=7,j=3;指针变量cp交换a和b的值,由于a、b的值是p,q值的拷贝,所以这次交换只改变了形参a,b的值,对实参p,q的值没有改变,此时指针变量a指向i,指针变量b指向i。函数最后输出*a和*b,所以输出3,7;由于swap()函数改变了p和q指向的值,昕以main()函数输出i的值为7,j的值为3,术p的值为i,*q的值为j,所以程序输出:3,7,7,3,7,3,本题答案为D。
转载请注明原文地址:https://kaotiyun.com/show/H1kp777K
0

最新回复(0)