- 不能建立void类型引用
int a = 9;
void &b = a; //错误
- 不能建立引用的数组
int a[] = {1,2,3,4};
int &b[] = a; //错误
- 可以将变量的引用的地址赋给一个指证,此时指针指向的是原来的变量
int a = 1;
int &b = a;
int *p = &b; //等价于 int *p = &a;
- 可以建立指针变量的引用
int a = 0;
int *p = &a;
int *&pt = p; //pt指向a,*pt与*p均为取出变量a
- 可以用
const
对引用加以限定,不允许修改该引用的值。
但可以改变引用所代表的变量的值。
这在将引用作为形参时,可以防止函数对引用进行修改,造成实参被修改
void fun(const int *i);
int a = 0;
const int &b = a;
b = 1; //报错
a = 1; //合法
- 可以用常量或表达式对引用进行初始化,
可以用不同类型的变量对引用初始化(针对类型转换兼容的类型),
但此时必须用const
声明引用
int a = 0;
const int &b = a + 1;
double d = 12;
const int &i = d;