1. 程式人生 > >c++之引用和指標的區別和聯絡

c++之引用和指標的區別和聯絡

區別:

1 引用不能為空(必須初始化),指標可為空。

int &a; // error
int *a; // ok

2 引用關係一旦被建立,則不能被解除,而指標可以指向別人。

int x = 1, y = 2;
int &a = x;
a = y;   // x = y = 2
執行後,x=2, y=2
int x = 1, y = 2;
int *a = &x;
a = &y; 
執行後,x=1, y=2

聯絡:

其實,引用的實現就是const型別的指標!但是c++不讓你知道這個指標的地址

因此:

int &*p // error, 不允許使用指向引用的指標
int *x = NULL;
int *&p=x; // 合法,P捆著的變數是int型的指標


void f(int &x){}; 不可傳入 f(3*i),而void f(const int &x)可傳入f(3*i),可見,i*3是作為一個const型的臨時變數存在記憶體中。