引用和指標的比較

2022-03-29 22:09:22 字數 958 閱讀 7266

引用和指標的比較

引用是c++中的概念,初學者容易把二者混淆。

1

int m;

int &n = m;

在這裡,n相當於是m的別名,對n的任何操作就是對m的操作。n既不是m的拷貝,也不是指向m的指標,其實n就是m它自己。

2

int i = 0;

int j = 5;

int &k = i;

k = j;         

示例程式中,k被初始化為i的引用。k = j並不是將k修改為j的引用,只是把k的值變為6。由於k是i的引用,所以i的值也變為了6。

引用的一些規則如下:

1,  引用被建立的同時必須被初始化,指標則可以在任何時候被初始化。

2,  不能有null引用,引用必須與合法的儲存單元相關聯,指標則可以是null。

3,  一旦引用被初始化,就不能改變引用的關係,指標則可以隨時改變所指的物件。

引用的主要功能是傳遞函式的引數和返回值。c++中,函式的引數和返回值的傳遞方式有三種:值傳遞,指標傳遞和引用傳遞。(注:指標傳遞也是值傳遞的一種,只不過此處的值是指標。)對比三種傳遞方式,我們發現「引用傳遞」的性質像「指標傳遞」,而書寫方式像「值傳遞」。

實際上,引用能夠做的任何事情,指標也可以做,為什麼還有「引用」?答案是:「用恰當的工具做恰如其分的工作」。

指標能夠毫無約束地操作記憶體中的任何東西,儘管指標功能強大,但是非常危險。如果只需要借用一下某個物件的別名,那就用「引用」,而不要用「指標」,以免發生意外。比如說,某人需要乙份證明,本來在檔案上蓋乙個章就可以了,如果把鎖工章的鑰匙給了他,那麼他就獲得了不該有的權利。

注:摘自林銳博士的《高質量c++程式設計指南》。

指標和引用的比較

總述 使用引用 reference 和指標 pointer 都可間接訪問另乙個值,但它們之間存在兩個重要區別 1 引用總是指向某個確定物件 事實上,引用就是該物件的別名 外號 定義引用時沒有進行初始化會出現編譯錯誤 2 賦值行為上存在差異 給引用賦值修改的是該引用所關聯癿物件的值,而不是使該引用與另...

指標和引用的比較

雖然使用引用 reference 和指標都可間接訪問另乙個值,但它們之間有兩個重要區別。第乙個區別在於引用總是指向某個物件 定義引用時沒有初始化 是錯誤的。第二個重要區別則是賦值行為的差異 給引用賦值修改的是該引用所關聯的物件的值,而並不是使引用與另乙個物件關聯。引用一經初始化,就始終 指向同乙個特...

引用與指標的比較

引用在建立的同時必須初始化,即引用到乙個有效的物件 而指標在定義的時候不必初始化,可以在定義後面的任何地方重新賦值 不存在 引用,引用必須與合法的儲存單元關聯 而指標則可以是null.引用一旦被初始化為指向乙個物件,它就不能被改變不另乙個物件的引用 而指標在任何時候都可以改變為指向另乙個物件 給引用...