int i=1,j=2,*p,*q; p=&i; q=&j; *p=*q;与输入p=q时分别求解 printf("%d%d%d%d,i,j*p,*q");

希望C语言高手给求解!
int i=1,j=2,*p,*q; p=&i; q=&j; (*p=*q;与输入p=q时)分别求解 printf("%d%d%d%d",i,j,*p,*q);

*p=*q时是2222,
p=q时是1222,
p=&i; q=&j;说明p和q里面存放着i和j的地址,*p和*q是对该地址处变量的引用,即*p=i,*q=j,执行*p=*q后i=j=2
后面的p=q是把q里面j的地址赋给p,也就是说p和q此时都指向了j,无法通过指针p来访问i了,只要记住一点就行了p和q都是指针,指针里存放的也是数值,就像a=b一样,p=q是把q里的东西给了p
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-19
一、改正你的printf语句,下面是正确的。
printf("%d%d%d%d",i,j,*p,*q);//你的引号位置不对,j后面少逗号。

二、改正后这个语句输出四个2
2222
第2个回答  2011-03-19
因该改成printf("%d%d%d%d",i,j,*p,*q)吧,
p=&i是将i的地址赋给p,则*p=i=1;
但后面*p=*q表示*p=*q=j=2;
结果应该是1 2 2 2
第3个回答  2011-03-20
A
相似回答