| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2058 人关注过本帖
标题:[原创]三言两语,妙解《指针》的附加例题。
取消只看楼主 加入收藏
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
结帖率:100%
收藏
 问题点数:0 回复次数:2 
[原创]三言两语,妙解《指针》的附加例题。
*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bc-cn.net
*/ 作者: hackerjiang E-mail:hackerjiang@qq.com QQ:298218699
*/ 时间: 2007-8-10 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------




刚才发色情帖,被扣了金钱,魅力等,遂决心改恶从良!这不,我又写一帖,望成精华,将功补过!

有一个这样的程序:它的作用是交换a,b的值。
#include <stdio.h>
void jh(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
main()
{
int a,b;
scanf("a=%d,b=&d",&a,&b);
printf("a=%d,b=&d",a,b);
jh(a,b);
printf("a=%d,b=&d",a,b);
getch();
return 0;
}

我们输入 a=2,b=4
输出:
a=2,b=4
a=2,b=4

结果是让我们失望了,为什么第二行不是a=4,b=2呢?

再看看这个:
void jh(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
main()
{
int a,b,*p-a,*p-b;
p-a=&a;
p-b=&b;
scanf("a=%d,b=&d",p-a,p-b);
printf("a=%d,b=&d",a,b);
jh(p-a,p-a);
printf("a=%d,b=&d",a,b);
getch();
return 0;
}
我们输入 a=2,b=4
输出:
a=2,b=4
a=4,b=2

这是怎么会事呢?

其实,程序一中调用的是a,b的值,
a,b的值只是传给型参x,y,
当函数调用完后马上就释放了,没有达到效果。

过程:

a值(2)—传给—X(2)↓ ↑→X(4)
→交换← 〓释放〓 结果:a还是2,b还是4
b值(4)—传给—Y(4)↑ ↓→Y(2)

而第二个是传地址(事实上我也不知道该怎么讲清楚```
第二个是“锁定”地址,进行值的交换。

还拿邮箱做比方!

第一个:
从邮箱A和邮箱B中拿到信件(值),给邮箱X和邮箱Y,邮箱X和邮箱Y交换后就被我军导弹消灭!
过程中并未涉及A,B的交换。

第二个:
邮箱X和邮箱Y分别记录邮箱A和邮箱B的地址。然后从邮箱X和邮箱Y中调用邮箱A和邮箱B的地址,并用temp作为中介交换

````````我讲清了吗? 我觉得还是没有```

不管怎样,大家还是支持一下吧!


[此贴子已经被作者于2007-8-10 20:51:10编辑过]

搜索更多相关主题的帖子: 指针 例题 hackerjiang target 
2007-08-10 20:38
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
收藏
得分:0 
wo ye shi chu xue a

(づ ̄ 3 ̄)づ
2007-08-10 21:59
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
收藏
得分:0 
以下是引用Knocker在2007-8-10 21:34:36的发言:

楼主,你还是踏踏实实学些基本的东西,抛去虚荣心,不要精华不精华,说实在的,你的C基础知识还差得远.

我认为精华是对我劳动成果的肯定。


(づ ̄ 3 ̄)づ
2007-08-10 22:01
快速回复:[原创]三言两语,妙解《指针》的附加例题。
数据加载中...
 
   



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

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