存在以下定义,int a=5,b=5,*c=&a,&d=b;为什么赋值语句a=b+d;正确,求详解

问题描述:

存在以下定义,int a=5,b=5,*c=&a,&d=b;为什么赋值语句a=b+d;正确,求详解
1个回答 分类:综合 2014-09-22

问题解答:

我来补答
先说一下引用,
引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样.
引用的声明方法:类型标识符 &引用名=目标变量名;
【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名
说明:
(1)&在此不是求地址运算,而是起标识作用.
(2)类型标识符是指目标变量的类型.
(3)声明引用时,必须同时对其进行初始化.
(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名.
ra=1; 等价于 a=1;
(5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元.故:对引用求地址,就是对目标变量求地址.&ra与&a相等.
这是主要也是很简单的几点,要理解透彻!
另外引用还有如下的规则:
(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化).
(2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL).
(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象).
下面我通俗的讲一下这道题,
int &d=b;其实就是给b取了个别名d,打个比方,小明的年龄是10岁,小明的小名叫小强,我说我的年龄是小明和小强年龄的和,其实就是说我的年龄是小明的年龄+小明的年龄,小强就是小明!
这里也是一样的道理,a=b+d等价于 a=b+b;b和d是同一个变量!你说a=b+b合法不合法呢?答案很显然,这是正确的!
一定要弄清楚引用的含义!因为很多地方我们都必须使用引用来直接获取参数,从而避免创造副本,难以返回参数值等情况.建议再看一看书,书上写的应该比较详细!如果觉得无法理解,建议找老师当面讲解!因为这真的是非常重要的知识点.
 
 
展开全文阅读
剩余:2000
下一页:格子里面填一下