c指针问题

[复制链接]
查看11 | 回复5 | 2012-4-11 10:40:17 | 显示全部楼层 |阅读模式
定义申明 p , p1, p2都为指针。指针就是存地址用的东西啦。那么不就很简单了赋值 p使p存的是p1这个指针所指向地址(a的内存地址),赋值p1使p1存的是p2所指向的地址(b的内存地址),赋值p2又使p2存了p指向的地址(a的内存地址)。指针说难也难 。说不难也不难 自己多弄几个指针做实验,慢慢体会就懂啦!你这段代码是交换 最后a b其实根本没有交换 只是指针换来换去而已~标准做法是 void swap(int *a , int *b){
int tmp;
tmp = *a;
*a = *b;
*b = tmp;}或者用引用(别名)做 也OK ~ 哥这么清楚的逻辑 你不懂对不起...
回复

使用道具 举报

千问 | 2012-4-11 10:40:17 | 显示全部楼层
p1和p2都是指针,他们分别存储a和b的内存地址。也就是p1指向a的地址,p2指向b的地址(p1=&a;p2=&b)。现在{p=p1;p1=p2;p2=p;}就是说当a<b时,先将p1的地址临时存入指针p中,在将p2的地址存入p1中,最后再将刚才临时存入p1地址的p指针的地址再存入p2中。意思就是将p1和p2所指向的地址相交换了。 此时p1指向的就是b,而p...
回复

使用道具 举报

千问 | 2012-4-11 10:40:17 | 显示全部楼层
你好:首先,int型的指针变量 p 存储的是int型变量的地址:如p1=&a;p2=&b;比较a与b的大小,若a大于b,则p1与p2交换:p1=&b;p2=&a;所以就是p1指向了b,p2指向a;否则,依旧p1还是指向a,p2还是指向b;于是,打印出来,大小比较结果就出来了。至于p的作用,无非是设置一个临时量,用以交换之用。指针这里有些抽象,不...
回复

使用道具 举报

千问 | 2012-4-11 10:40:17 | 显示全部楼层
就是修改指针的指向,让重新指向别的存储单元,首先p=p1就是p指向p1 ,p1=p2
就是让p1指向p2,执行后,p1的指向就改变了,它不再指向a的地址,而是指向b的地址p2=p
就是让p2指向p,执行后,p2的指向就改变了,它不再指向b的地址,而是指向a的地址...
回复

使用道具 举报

千问 | 2012-4-11 10:40:17 | 显示全部楼层
意思就是把p1,p2值互相交换,由于p1p2都是指针,他们保存的值实际上是他们指向的地址,所以这个操作相当于将p1指向b,p2指向a...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行