有以下程序  #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-10-24  22

问题 有以下程序
 #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。指针变量tp交换a和b的值,由于a、b的值是p、q值的复制,因此这次交换只改变了形参a、b的值,对实参p、q的值没有改变,此时指针变量a指向i,指针变量b指向i。swap函数最后输出*a和*b,所以输出3,7。由于swap函数改变了p和q指向的值,因此main函数输出i的值为7,i的值为3,*p的值为i,*q的值为j。最终程序输出:3,7,7,3,7,3。故本题答案为D选项。
转载请注明原文地址:https://kaotiyun.com/show/MDkp777K
0

最新回复(0)