1.什么是引用
(1)引用即别名,对引用的操作与对变量本身完全相同;
(2)引用的语法
类型&引用名=变量;
(3)注意事项
- a)引用在定义时必须初始化;
- b)引用初始化以后其绑定目标不能修改;
- c)引用和绑定的目标变量类型要一致;
简单地说,引用就是一个别名,对别名的操作与对变量本身的操作是完全相同的,这里的别名是指变量的别名,换到实际开发中,可以背某个变量起别名,例如:一个整形变量a,其初始化值为10,则通过a这个变量就可以访问到内存中初始化的这个数据10了,在开发中,有时候想给变量a起个别名,比如叫b,或c,那么我们可以通过b或者c访问到该数据10。从语法角度说,想要给某个变量起别名,就是要在这个定义这个变量时候加上一个“&”,表达的意思是想要给某个变量起个别名,这个别名称为引用。使用时候需要注意,引用使用时候必须初始化,必须是先有了变量本身,然后再给这个变量起别名,引用的本身是没有内存的,它要和初始化的变量绑定到一块,所以引用定义时必须初始化;引用在初始化后其绑定的目标不能修改,即我给某个变量起别名后,这个别名只能作为该变量的别名;引用和绑定的目标变量类型需要一致,对引用的操作与对变量本身的操作是一致的,若引用和绑定的目标类型变量不一致的话,通过引用访问操作后与通过变量本身访问操作结果不一致,没有保证完全相同,因为变量的类型决定了对内存的访问方式,一个整形变量能够访问4个字节的内存,一个char类型的只能访问一个字节,想要保证对引用的操作与对变量本身的操作相同,就要保证引用的类型与绑定的目标变量的类型相同。
//05 reference.cpp
#include <iostream>
using namespace std;
int main(void)
{
int a= 100;
int &b = a;//b引用a,b就是a的别名,b被称为引用,&表达的是对引用的标记
cout <<"a="<<a<<endl;//a=100
cout<<"b="<<b<<endl;//b=100
//a的地址和b的地址相同,即b这个标识符和变量a绑定到了一起,对应的是同一块内存。引用b本身没有内存,是和变量a绑定到了一块。
cout<< "&a="<<&a<<endl;
cout<<"&b="<<&b<<endl;
//对引用b操作,变量a也会被修改
b++;
cout<<"a="<<a <<endl;//101
cout<<"b="<<b <<endl;//101
// int &r;//这行代码会直接报错,因为没有初始化。引用定义必须初始化。
int c= 200;
b = c;//b是引用的a,仅仅是赋值操作,而不是修改目标,是将c的值拷贝给了b,相应的a也会受到影响。
//a和b的地址不会改变
cout<<"&a="<<&a <<endl;
cout<<"&b="<<&b <<endl;
// char &rc=c;//c的类型为int,rc的类型与绑定目标变量c的类型不一致,所以报错。
}