(1)引用的定义
类型&引用变量名=变量名;
在这个式子中,&和类型结合称之为引用符号,不是取地址的符,代表别名的意思。
int main()
{
int a = 10;
int b = a; // 变量
int &c = a; // 引用 // c11 中称为左值引用
return 0;
}
(2)引用的特点
int main()
{
int a = 10;
int &x; // error 定义引用必须初始化
int &y = NULL; // error 没有空引用
int &b = a;
int &&c = b; // error //没有引用的引用、所为的二级引用
}
总结:(1)定义引用时必须初始化(2)没有空引用(3)没有所谓的二级引用(即引用的引用)
(3)const引用
int main()
{
int a=20;
const int b=40;
int &x=b;//error;不安全可以通过x改变b的值,但是b为常性不可以更改
const int&x=b;//ok
const int &y=a;//ok
const int &z=10;//ok
//int tmp=10;
//const int &z=tmp;
return 0;
}
(4)引用作为形参代替指针
使用指针交换两个整型值
void my_swap(int*a,int*b)
{
assert(a!=nullptr&&b!=nullptr);
int tmp=*a;
*a=*b;
*b=tmp;
}
int main()
{
int a=3;
int b=5;
cout<<"a="<
使用引用交换两个整型值
void my_swap(int &x,int &y) // 不存在NULL引用, 不需要判空 , 比指针安全
{
int tmp = x;
x = y;
y = tmp;
}
int main()
{
int a = 10,b = 20;
cout<<"a = "<
(5)其他形式的引用
int main()
{
int a = 10, b= 20;
int ar[5]={1,2,3,4,5};
int *p = &a;
int *&p1 = p; //引用指针
int &x = ar[0];
int (&br)[5] = ar; //引用数组
return 0;
}



