| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5622 人关注过本帖
标题:printf和scanf函数为什么一个要取地址符一个不用呢?
只看楼主 加入收藏
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
StarWing83
你说的谁是假FANs?
我也是假 FAN"s啊

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-10-22 23:23
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
这个问题很简单。其原因来自于调用函数和传递参数的方式。众所周知,参数通过栈传递其拷贝。函数中对“副本”的任何修改不会影响到“原件”。

因此,如果我们希望函数为我们修改一个数据(或者说成我们提供一个接收数据的位置,由函数为我们填充数据),则我们需要传递该数据的地址(指针)。这样函数中就可以dereference然后改动被指向的数据。

而如果我们只是希望告诉函数一个数据的信息,则传递一个它的副本足以(换句话说,这种信息的逻辑意义对于函数来说是只读的)。

例如:

void push(Type T, TNODE **top);

则说明push函数希望修改*top的值。
2008-10-23 04:06
快速回复:printf和scanf函数为什么一个要取地址符一个不用呢?
数据加载中...
 
   



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

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