有以下程序:include <stdio.h> main() { int a=7 b=8 * p *q *r; p=a;q=b; r=p; p=q;q=r; pr
程序,
已帮助 人
有以下程序: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 ", * 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。
