| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 846 人关注过本帖
标题:[讨论]弄不懂的程序!!!!看看!
只看楼主 加入收藏
xiehongyou
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2004-8-29
收藏
 问题点数:0 回复次数:7 
[讨论]弄不懂的程序!!!!看看!
int ast(int x,int y,int *cp,int *dp)
{*cp=x+y;
*dp=x-y;
}
main()
{int a,b,c,d;
a=3;
b=4;
ast(a,b,&c,&d);
printf("%d%d\n",c,d);
getch();
}
为何运行的结果是7-1,而不是71,真的不明白, A与B的值是何时互换的,请教高手!
搜索更多相关主题的帖子: 弄不懂 
2005-01-06 08:44
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 
3-4 不是-1么????

差点把你忘了...
2005-01-06 09:09
abingchem
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:716
专家分:0
注 册:2004-12-30
收藏
得分:0 
传地址嘛,当然会改变c,d的值了

此人已消失
2005-01-06 09:13
xiehongyou
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2004-8-29
收藏
得分:0 
谢了
2005-01-06 12:23
grub2linux
Rank: 1
等 级:新手上路
帖 子:335
专家分:0
注 册:2004-12-25
收藏
得分:0 
哪里是什么传地址?! 谁传给谁?cp传给c?dp传给d?cp dp是形参本身怎么会有值?在MAIN()调用他的函数后,a b 完全取代了x y. &c &d完全取代了cp dp,从而被赋予3+4,3-4.来自a b的值.哪里是c,d的值改变了?!
关键是 *&c=c.(&,*实际上不是普通的符号而都是运算符,&c,取c地址, *addr,指向addr地址的内存空间,就可以寸取了,*&c就是先取c地址<在前面被定义了变量,系统就分配地址了,比如在177734内存处>,然后再指向自己的内存空间<177734>,也就是c自己.接着c=3+4,就是把7赋给c,也就是把7写到177734内存处).
够清楚了吧.

这个小程序就是看有没有掌握两个关键知识点:
1,形参和实参的关系(被取代和取代)
2, * & 两符号的关系.(指向和指针(指针就是地址))


[此贴子已经被作者于2005-1-7 13:18:48编辑过]



有缘相识!我中文系的 3月拿下C/C++/VC 5天写游戏 2月写游戏系统 有空去http://mykool.go2.
2005-01-07 02:37
时空之蕊
Rank: 2
等 级:新手上路
威 望:3
帖 子:691
专家分:0
注 册:2004-10-31
收藏
得分:0 
楼上的说错了吧!a和b是传递的值不是地址,而c和d才是传递的地址,所以c和d的值才会改变!晕! int ast(int x,int y,int *cp,int *dp) {*cp=x+y; *dp=x-y; } main() {int a,b,c,d; a=3; b=4; ast(a,b,&c,&d);//运行后a,b的值不变,c变为i7,d变为-1所以输出才是7-1注意是输出7然后再输出-1由于中间没有空格所以看上去就是7-1呵呵!好久没来了想念这里啊!不知道怎么我的版主位置怎么没了! printf("%d%d\n",c,d); getch(); }

我渴望掌控时空的核心——用最先进的技术,打造无比美丽的世界!
2005-01-07 11:33
grub2linux
Rank: 1
等 级:新手上路
帖 子:335
专家分:0
注 册:2004-12-25
收藏
得分:0 
楼上的,并不是"c和d才是传递的地址,所以c和d的值才会改变!" c d 不是地址,只是普通变量,他们的值通过调用函数第一次也是最后一次被分别赋值3+4和3-4(来自a b)后,没有任何改变! 建议看一下我上面的小帖...写的很细,,

[此贴子已经被作者于2005-1-7 13:17:24编辑过]


有缘相识!我中文系的 3月拿下C/C++/VC 5天写游戏 2月写游戏系统 有空去http://mykool.go2.
2005-01-07 13:13
young
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:223
专家分:160
注 册:2004-9-5
收藏
得分:0 

如果你爱C语言,请你爱指针; 如果你爱指针,请你爱指针的指针;
2005-01-09 17:22
快速回复:[讨论]弄不懂的程序!!!!看看!
数据加载中...
 
   



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

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