c++的引用变量

inti=0;int&ir=i;为什么在引用的时候赋值右边一定要是变量,i是等于0,难道不能用int&ir=0;请举个有说服力的例子?... int i=0;

int &ir=i;

为什么在引用的时候赋值右边一定要是变量,i是等于0,难道不能用int &ir=0;请举个有说服力的例子?
展开
 我来答
嬴霸
推荐于2016-11-21 · TA获得超过3.1万个赞
知道大有可为答主
回答量:2214
采纳率:0%
帮助的人:1898万
展开全部
如果int &ir=0,表示的是地址为0,而不是引用的意思,声明中有变量赋值的情况,必须把变量作为引用的对象,要不然系统无法识别你的语句是引用还是赋值!

说明:
(1)&在此不是求地址运算,而是起标识作用。
(2)类型标识符是指目标变量的类型。
(3)声明引用时,必须同时对其进行初始化。
(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。
ra=1; 等价于 a=1;
(5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。故:对引用求地址,就是对目标变量求地址。&ra与&a相等。
(6 ) 不能建立数组的引用。因为数组是一个由若干个元素所组成的集合,所以无法建立一个数组的别名.
(7)不能建立引用的引用,不能建立指向引用的指针。因为引用不是一种数据类型,所以没有引用的引用,没有引用的指针。
例如:
int n;
int &&r=n;//错误,编译系统把"int &"看成一体,把"&r"看成一体,即建立了引用的引用,引用的对象应当是某种数据类型的变量
int &*p=n;//错误,编译系统把"int &"看成一体,把" *p "看成一体,即建立了指向引用的指针,指针只能指向某种数据类型的变量
(8)值得一提的是,可以建立指针的引用
例如:
int *p;
int *&q=p;//正确,编译系统把" int * "看成一体,把"&q"看成一体,即建立指针p的引用,亦即给指针p起别名q。
注意:学会这种分析方法,把什么看成一体,又把什么看成一体
引用格式:一般在文章的注解中提到或在文中直接写出,也可以加引号(20字以下不用)
滨崎步最爱
2009-09-26 · TA获得超过665个赞
知道小有建树答主
回答量:705
采纳率:0%
帮助的人:458万
展开全部
很肯定的说,不能,
一般情况下定义非const引用时,必须用与该引用同类型的对象初始化,初始化后该引用不能在关联其他对象,所以用右值对非const引用赋值是错的;
但是如果你定义的是const 引用,则可以初始化为不同的对象或者右值,比如const int&a=8;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
旁笑槐NH
2009-09-26 · TA获得超过2545个赞
知道大有可为答主
回答量:2686
采纳率:0%
帮助的人:2893万
展开全部
这是C++规定的,因为它是引用不是值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xrhigh
2009-09-26 · TA获得超过1495个赞
知道小有建树答主
回答量:657
采纳率:0%
帮助的人:842万
展开全部
你这里的地址运算符&与指针里的地址运算符用法不同。在这种情况下,只相当于给变量i取了一个别名ir.对这个别名的操作相当于对变量i的操作。C++规定:这种引用变量在声明时一定要初始化(就是要让它代表一个变量),另外这种引用变量声明以后,不能再让它成为另一个变量的别名,就是不能再让它引用另一个变量!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BlueWanderer
2009-09-26 · TA获得超过9209个赞
知道大有可为答主
回答量:5673
采纳率:83%
帮助的人:2015万
展开全部
1. 常数只能作为右值,引用右值需要常引用。

const int &ir = 0; 这是可以的。

非常引用是作为左值得别名存在的,必须用左值初始化。

2. 那个不是赋值,是初始化。引用是没有值的,或者说引用没有“等于什么”的概念,而是一个“相当于”或者“用来代表”的概念。

const int &ir = 0; 也并不是把0赋值给ir,而是让ir来代替0。让ir作为0的一个别名存在。

int &ir = i; 也是一样。变量还是只有i一个,只不过有一个本名i和一个别名ir而已。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式