问题
单项选择题
有以下程序:
#include <stdio.h>
main( )
int a=7,b=8,* p,*q, *r;
p=&a;q=&b;
r=p; p=q;q=r;
printf(" % d,% d,% d,% d \n", * p, * q.a,b);
程序运行后的输出结果是( )。
A.8,7,8,7
B.7,8,7,8
C.8,7,7,8
D.7,8,8,7
答案
参考答案:C
解析: 程序中P和q是指针变量,它们分别存放了变量a和L的地址,执行P=&a;q= &b;语句后,*p和*q的值就分别为7和8,执行r=P;P=q;q=r;实际上是进行指针变量p和 q的交换,即将其存放的a和b的地址进行了交换,也就是P指向了b,q指向了a,此时a,b的值并没有改变,所以输出的*P,*q的值为8,7,而a,b的值仍为7,8。