生活实例:
我们可以按“会议室”,这个名字找到开会的地方,也可以按地址“1105”号房找到它。1105是地址,换句话说,1105所指的房间就是会议室。你也可以给这个会议室起个别名。(别名就是引用)
例如:变量a的地址是“2205”,则2205所指存储单元就是a。
1、定义理解
指针:
C++中,指针访问运算符“*”。例如,*(2205)相当于变量a的名访问。但是我们如何去知道2205这个地址那?取址运算符是“&”。
实例:
& a //变量a的地址(指针)
*(&a) //a的地址所指的对象
指针的定义
引用:
引用:C++允许为对象定义别名,成为“引用”。
引用定义
引用的规则:
(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
(2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。
(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。2、引用和指针工程中应用(1)非空区别。在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让他指向一个对象,但是该变量在某些时候也可能不指向任何对象,这是你应该把变量声明为指针,因为这样你可以赋予空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。不存在指向空值得引用这个事实意味着使用引用的代码效率比使用指针要高。
(2)合法性区别。在使用引用之前不需要测试它的合法性。相反,指针则应该总是被测试,防止其为空。
(3)可修改区别。指针与引用的另一个重要的不同是指针可以被重新赋值以指向另一个不同的对象。但是引用则是总是指向在初始化时被指定的对象,以后不能改变,但是指定的对象其内容可以改变。
(4)应用区别。总的来说,在以下情况下你应该使用指针:一是你考虑到存在不指向任何对象对象的可能(在这种情况下,你能够设置指针为空),二是你需要能够在不同的时刻指向不同的对象(在这种情况下,你能改变指针的指向)。如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么你应该使用引用。