| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 401 人关注过本帖
标题:&的问题
只看楼主 加入收藏
loveonline
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-8-25
收藏
 问题点数:0 回复次数:3 
&的问题

const int & r ;和const int r ;是不是一样的啊?请高手指点。

2006-08-30 17:17
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
不一樣吧, const int & r, r 是對某個 int 常數的引用吧.
const int r, r 是指某個 int 常數.

在使用方面則沒甚麽.

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-30 17:21
loveonline
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-8-25
收藏
得分:0 

感谢上面的回答,我前几天也看过函数形参里是这种形式,比如发function(float &a,float &b).

2006-08-30 17:58
loveonline
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-8-25
收藏
得分:0 

我刚查到的资料:



引用经常用于“按引用传递(pass-by-reference)”:

void swap(int& i, int& j)
{
int tmp = i;
i = j;
j = tmp;
}

int main()
{
int x, y;
// ...
swap(x,y);
}
此处的 i 和 j 分别是main中的 x 和 y。换句话说,i 就是 x —— 并非指向 x 的指针,也不是 x 的拷贝,而是 x 本身。对 i 的任何改变同样会影响 x,反之亦然。

OK,这就是作为一个程序员所认知的引用。现在,给你一个不同的角度,这可能会让你更糊涂,那就是引用是如何实现的。典型的情况下,对象 x 的引用 i 是 x 的机器地址。但是,当程序员写 i++ 时,编译器产生增加 x 的代码。更详细的来说,编译器用来寻找 x 的地址位并没有被改变。C 程序员将此认为好像是 C 风格的按指针传递,只是句法不同 (1) 将 & 从调用者移到了被调用者处,(2)消除了*s。换句话说,C 程序员会将 i 看作为宏 (*p),而 p 就是指向 x 的指针(例如,编译器自动地将潜在的指针解除引用;i++被改变为 (*p)++;i = 7 被自动地转变成 *p = 7)。

很重要:请不要将引用看作为指向一个对象的奇异指针,即使引用经常是用汇编语言下的地址来实现的。引用就是对象。不是指向对象的指针,也不是对象的拷贝,就是对象。

2006-08-30 18:00
快速回复:&的问题
数据加载中...
 
   



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

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