| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 737 人关注过本帖
标题:有个指针的问题搞不懂,请指教
只看楼主 加入收藏
bigzerg
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2008-5-19
收藏
 问题点数:0 回复次数:8 
有个指针的问题搞不懂,请指教
void swap(int *pa,int *pb)
{int *p;
 p=pa;pa=pb;pb=p;
}
main()
{int a=2,b=4;
 int *pa,*pb;
 pa=&a;pb=&b;
 if(a<b) swap(pa,pb);
 printf("%d,%d\n",*pa,*pb);
}
为什么这个程序只能把pa,pb的地址改了,但不改变对应的值呢?
搜索更多相关主题的帖子: 指针 指教 
2008-06-22 22:00
bigzerg
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2008-5-19
收藏
得分:0 
我想问的就是为什么对主函数没影响的?就是为什么*pa和*pb的值没有交换?
2008-06-22 22:38
wltysy
Rank: 1
等 级:新手上路
帖 子:560
专家分:0
注 册:2008-5-2
收藏
得分:0 
好像是指针只能改变他所指向的元素的值,本身的不会改变!
2008-06-22 22:43
wangjianlin2008
Rank: 1
来 自:四川
等 级:新手上路
帖 子:207
专家分:0
注 册:2008-6-22
收藏
得分:0 
不会吧
我看不是通过指针传递的,修改了指针的地址,那么指针指向的内容也该跟着变啊!
2008-06-23 09:29
mqh21364
Rank: 1
等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
收藏
得分:0 
指针做参数和基本类型做参数实际上是一样的。

本来如果*pa 指向 a, *pb 指向b,在指针做参数的时候,系统也是复制了pa, pb的值, 我们暂定他叫做pa1, pb1.
那么*pa1=a, *pb1=b. 然后你交换*pa1,*pb1,其实交换的就是a,b.

但是,你在这里交换的是pa1, pb1两个值,但是这两个值在函数运行结束后就消失了,你根本没有交换到实际的a,b。

不知道说的清楚不清楚,错了请大家指教

前不见古人,后不见来者。念天地之悠悠,独怆然而涕下。
2008-06-23 09:52
gongjiandenghua
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-23 12:53
coming
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2008-4-20
收藏
得分:0 
你交换的指针,指针是指向变量的,交换了仅仅是改变了指针,也就是改变了指针的指向,而并没有改变指向的值,因为在你的函数里没有改变,所以对主函数里定义的也不会改变 也就是没有影响
2008-06-23 13:49
hajiwon
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-11-15
收藏
得分:0 
不能通过改变指针形参的值而使指针实参的值改变
2008-06-23 14:14
快速回复:有个指针的问题搞不懂,请指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014905 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved