| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 735 人关注过本帖
标题:关于指针的问题?麻烦大家看看!!!
只看楼主 加入收藏
fz19910125
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:52
专家分:11
注 册:2010-10-12
结帖率:84.62%
收藏
已结贴  问题点数:20 回复次数:11 
关于指针的问题?麻烦大家看看!!!
代码如下:
程序代码:
//1
void exchange(int* a,int* b)
{
    int *tmp;
    tmp = a;
    a = b;
    b = tmp;
}

//2
void exchange(int* a,int* b)
{
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}

请问大家,为什么程序1不能交换a,b的值,而程序2可以交换?

[ 本帖最后由 fz19910125 于 2012-11-30 09:36 编辑 ]
搜索更多相关主题的帖子: 看看 
2012-11-29 22:43
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
收藏
得分:1 
我也不知道我理解的对不对,定义函数是不能改变指针指向数值的,只能改变指针所指向的地址。。。

有心者,千方百计;无心者,千难万难。
2012-11-29 22:50
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
不好讲,这么说吧,有两杯水,一个只换杯子,一个杯子和水都换,当然只换杯子了


[fly]存在即是合理[/fly]
2012-11-29 22:51
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 

DO IT YOURSELF !
2012-11-30 06:00
木头人不是人
Rank: 2
等 级:论坛游民
帖 子:8
专家分:19
注 册:2012-11-4
收藏
得分:2 
void exchange(int* a,int* b)
{
    int *tmp;
    tmp = a;
    a = b;
    b = tmp;
}

tmp 是指针,
tmp = a; a也是指针,
你这样是把a存放的地址赋值给tmp。
你这个程序互换的效果是 互换了 a b两个指针变量所存放的地址,和主函数里面的 原数没有关系,
2012-11-30 08:48
张朝成
Rank: 4
等 级:业余侠客
帖 子:149
专家分:265
注 册:2012-3-22
收藏
得分:3 
//1
void exchange(int* a,int* b)
{
    int *tmp;
    tmp = a;
    a = b;
    b = tmp;
}//  这个函数你是交换地址,但是内容没有变化。

//2
void exchange(int* a,int* b)
{
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}// 这里交换的是内容,所以就能实现。

2012-11-30 10:17
DDDemon
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2012-11-19
收藏
得分:0 
学习了~之前也在纠结这个问题

谈更多未来。
2012-11-30 10:45
laoA
Rank: 2
等 级:论坛游民
帖 子:24
专家分:59
注 册:2012-11-18
收藏
得分:2 
个人理解:

这个是关于函数传值的问题,其实这个程序和
void (int a ,int b)
{
    int temp;
    temp=1;
     a=b;
     b=temp;

}

是一个道理,如果LZ理解上面这个程序的话,就能理解你的、问题了
2012-11-30 16:08
fz19910125
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:52
专家分:11
注 册:2010-10-12
收藏
得分:0 
以下是引用laoA在2012-11-30 16:08:44的发言:

个人理解:
 
这个是关于函数传值的问题,其实这个程序和
void (int a ,int b)
{
    int temp;
    temp=1;
     a=b;
     b=temp;
 
}
 
是一个道理,如果LZ理解上面这个程序的话,就能理解你的、问题了
有点头绪了
2012-11-30 16:53
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
细细品读

www.qunxingw.wang
2012-11-30 22:43
快速回复:关于指针的问题?麻烦大家看看!!!
数据加载中...
 
   



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

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