定义:引用就是已经定义的变量的别名。
语法:Type& name = var;
eg: int a = 0; int& b = a; // b 就是 a 的别名 b = 5; // 操作 b 就是操作 a
引用在定义的时候必须用同一种类型进行初始化,a,b类型相同。
含义:在C++中可以对同一段内存起不同的名字。
1. 引用代替指针
void swap( int& a , int& b ) //同一变量的地址 { int temp = a; a = b; b = temp; } void swap(int *a,int* b) { int temp = *a; *a = *b; *b = temp; } int main(void) { int a=1,b=2; swap(a,b); return 0; }
2. const引用
语法:const Type& name = var;
含义:const引用让变量拥有只读属性。
int a = 4; const int& b = a; b = 5; // error
注:引用中不可以用常量来初始化。const引用可以。
int& a = 1; //error const int& a = 1; //此时编译器会创建只读常量,内存创建四个字节地址,用b作为其别名。
int *p = (int *)&a;
*p = 5 ; // ok a==5
3.引用在C++内部的实现是指针常量
指针常量规定了指针指向的地址不可变。使用时引用 a 相当是 *a。
Type& name; <==> Type* const name;
void fun(int& a) { a = 5;} //等价 void fun(int* const a) {*a = 5;}