当前位置: 代码迷 >> C语言 >> [讨论]啷个回事?
  详细解决方案

[讨论]啷个回事?

热度:65   发布时间:2007-11-07 21:29:11.0
main()
{
int a,b,t,*pa=&a,*pb=&b;
scanf("%d%d",pa,pb); //输入2和3后,pa指向变量a=2,pb指向变量b=3
t=*pa; //t=2
pa=pb; //pa指向(pb指向的变量:即b);
*pb=t; //将t的值赋给pb指向的变量,即pb指向的变量值为b=2
printf("%d %d\n",*pa,*pb); //所以pa指向b,所以*pa的值为2,pb也指向b,所以*pb的值为2
}

----------------解决方案--------------------------------------------------------
main()
{
int a,b,t,*pa=&a,*pb=&b;
scanf("%d%d",pa,pb); //输入2和3后,pa指向变量a=2,pb指向变量b=3
t=*pa; //t=2
pa=pb; //pa指向(pb指向的变量:即b);
*pb=t; //将t的值赋给pb指向的变量,即pb指向的变量值为b=2 b不是为3吗?
printf("%d %d\n",*pa,*pb); //所以pa指向b,所以*pa的值为2,pb也指向b,所以*pb的值为2
}

----------------解决方案--------------------------------------------------------
正确的写法应该是

main()
{
int a,b,t,*pa=&a,*pb=&b;
scanf("%d%d",pa,pb); //输入2和3后,pa指向变量a=2,pb指向变量b=3
t=*pa; //t=2
*pa=*pb; //将pb指向的变量b的值3 赋给 pa指向的变量a, 即本句等效于 a=b);
*pb=t;
printf("%d %d\n",*pa,*pb);
}

----------------解决方案--------------------------------------------------------
pa=pb; //pa指向(pb指向的变量:即b); *pa 就是3啊,结果也应是3啊
----------------解决方案--------------------------------------------------------
回12楼:

*pb=t; //将t的值赋给pb指向的变量,即pb指向的变量值为b=2 b不是为3吗?

b原来是3,
执行完上述语句后就是2了。
上述语句等效于

b=t;


----------------解决方案--------------------------------------------------------
回复:(mebol) pa=pb; //pa指向(p...

pa只是一个指针,上述语句只能改变pa的指向,而不是将pa原来指向的变量的值赋给另外一个指针pb指向的变量
----------------解决方案--------------------------------------------------------
输错了,应是指这句:
pa=pb; //pa指向(pb指向的变量:即b);
pa的结果应为3吧?
----------------解决方案--------------------------------------------------------
看了好久,呵呵

支持16#的话.
----------------解决方案--------------------------------------------------------
终于明白!谢啦!
----------------解决方案--------------------------------------------------------
..
----------------解决方案--------------------------------------------------------
  相关解决方案