指標與引用

2021-08-21 13:20:48 字數 520 閱讀 5646

1. 指標和引用的差別:

(1)非空差別:

在任何情況下都不能使用指向空值的引用。乙個引用必須總是指向某些物件。因此如果我們使用乙個變數並將其指向乙個物件,但是該變數在某些時候也可能不指向任何物件,這個時候就應該把變數宣告為指標,因為這樣我們可以賦空值給該變數。相反,如果變數肯定指向乙個物件,例如我們的設計不允許變數為空,這時就可以把變數宣告為引用。不存在 指向空值的引用這個條件使得使用引用的**效率比使用指標的**高。

(2)合法性區別:

在使用引用前不需要測試它的合法性。相反,指標則應該總是被測試,防止其為空。

(3)可修改區別

指標可以被重新賦值以指向另乙個不同的物件。但是引用總是指向在初始化時被指定的物件,以後不能改變,但是指標的物件及其內容都可以改變。

(4)應用區別:

(a)在考慮到存在不指向任何物件的情況下,可使用指標;

(b) 需要在不同的時刻指向不同的物件的情況下,可使用指標;

(c)總是指向乙個物件並且一旦指向乙個物件後就不會改變指向,那麼應該使用引用。

指標與引用

摘自 高質量c 程式設計 指標與引用,在more effective c 的條款一有詳細講述,我給你轉過來 條款一 指標與引用的區別 指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用...

引用與指標

引用就是物件的另乙個名字,在實際的程式中,引用主要用作函式的形式引數。引用是一種復合型別,通過在變數名前新增 符號來定義。復合型別是指用其他型別定義的型別。在引用的情況下,每一種引用型別都 關聯到 某一其他型別。引用必須用與該引用同型別的物件初始化。當引用初始化後,只要該引用存在,它就保持繫結到初始...

指標與引用

include iostream using namespace std void testref int i 10 引用不可以為空,他是乙個物件的別名 int ref i ref cout i 00824f1e mov dword ptr i 1 把i的位址傳入eax 並把eax指標的位址傳給re...