c语言的交换地址的一个题,麻烦看看

[复制链接]
查看11 | 回复2 | 2009-8-5 16:23:09 | 显示全部楼层 |阅读模式
首先要明白一个事,传值跟传指针其实都是传值,我们说的传指针能改变数据其实也是传的值,拿第一个来说,我们把p,q传进去,其实a、b与p、q是不同的指针,只不过它们指向同一个地址,如果这样写*c=*a;*a=*b;*b=*c;就能改变x与y的值了,现在这样c=a;a=b;b=c;其实只是把a、b两个临时的指针变量的值给换过来了下面就好理解了...
回复

使用道具 举报

千问 | 2009-8-5 16:23:09 | 显示全部楼层
这个是“c=a;a=b;b=c;”执行的是指针地址的交换,而不是指针内容的交换,所以地址交换无意义,内容不改变,输出结果任然是3,5.若程序那部分改成:int c;c=*a;*a=*b;*b=c;这样结果是3,55,3这样便能体现出上述知识,和本程序应该有的对比的效果。若还有些不明白,就是基础知识没有掌握好,没有真正体会到函数调用过程中,数据...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行