值类型和引用类型区别
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
值类型和引用类型区别
“引用”(reference)是c++的一种新的变量类型,是对c的一个重要补充。
它的作用是为变量起一个别名。
假如有一个变量a,想给它起一个别名,可以这样写:
inta;int&b=a;
这就表明了b是a的“引用”,即a的别名。
经过这样的声明,使用a或b的作用相同,都代表同一变量。
在上述引用中,&是“引用声明符”,并不代表地址。
不要认知为“把a的值诗赋给b的地址”。
提及类型的数据存储在内存的堆中,而内存单元中只放置堆上中对象的地址。
声明提及并不开拓内存单元,b和a都代表同一变量单元。
注意:在声明引用变量类型时,必须同时使之初始化,即声明它代表哪一变量。
在声明一个变量的引用之后,在本函数执行期间,该引用一直与其代表的变量相联系,不能再作为其他变量的别名。
看看实例吧:
引用是c++中的概念,初学者容易把引用和指针混淆一起。
下面的程序中,n就是m的一个提及(reference),m就是被提及物(referent)。
intm;
int&n=m;
n相当于m的别名(绰号),对n的任何操作就是对m的操作。
所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。
(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
(2)无法存有null提及,提及必须与合法的存储单元关联(指针则可以就是null)。
(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。
以下示例程序中,k被初始化为i的提及。
语句k=j并不能将k修改成为j的引用,只是把k的值改变成为6。
由于k就是i的提及,所以i的值也变为了6。
inti=5;
intj=6;
int&k=i;
k=j;//k和i的值都变为了6;。