- 不能建立void類型引用
int a = 9;
void &b = a; //錯(cuò)誤
- 不能建立引用的數(shù)組
int a[] = {1,2,3,4};
int &b[] = a; //錯(cuò)誤
- 可以將變量的引用的地址賦給一個(gè)指證,此時(shí)指針指向的是原來的變量
int a = 1;
int &b = a;
int *p = &b; //等價(jià)于 int *p = &a;
- 可以建立指針變量的引用
int a = 0;
int *p = &a;
int *&pt = p; //pt指向a,*pt與*p均為取出變量a
- 可以用
const對(duì)引用加以限定,不允許修改該引用的值。
但可以改變引用所代表的變量的值。
這在將引用作為形參時(shí),可以防止函數(shù)對(duì)引用進(jìn)行修改,造成實(shí)參被修改
void fun(const int *i);
int a = 0;
const int &b = a;
b = 1; //報(bào)錯(cuò)
a = 1; //合法
- 可以用常量或表達(dá)式對(duì)引用進(jìn)行初始化,
可以用不同類型的變量對(duì)引用初始化(針對(duì)類型轉(zhuǎn)換兼容的類型),
但此時(shí)必須用const聲明引用
int a = 0;
const int &b = a + 1;
double d = 12;
const int &i = d;