int a=10,b=20,*p1,*p2; p1=&a; p2=&b; p1=p2; printf("%d,%d",*

问题描述:

int a=10,b=20,*p1,*p2; p1=&a; p2=&b; p1=p2; printf("%d,%d",*p1,*p2); 答案是20,20怎么算?
我算的是10,10,不是应该是指针变量p2也指向指针变量p1所指向的变量么
1个回答 分类:综合 2014-10-02

问题解答:

我来补答
提问:不是应该是指针变量p2也指向指针变量p1所指向的变量么?
回答:不是.
p1=&a; p2=&b; p1=p2;
刚开始p1指向a的地址,p2指向b的地址
但由于p1=p2; 语句,又使得p1指向p2指向的地址(p1=p2;这是一条赋值语句,就是把p2的地址值赋给p1,但p2的地址值并没有改变,所以你提问的答案是否定的),也就是说,p1=p2; 这条语句使得p1间接的指向了b的地址.最终p1,p2都指向了b的地址,所以执行printf("%d,%d",*p1,*p2); 语句
便输出了两次b的值,也就是20,20了
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识