關於引用和指標

2021-08-15 08:17:23 字數 920 閱讀 6692

首先最近複習了一下c++中引用的概念。引用在c++中的內部實現是乙個常指標type& name <–> type* const name

c++編譯器在編譯過程中使用常指標作為引用的內部實現,因此引用所占用的空間大小與指標相同

從使用的角度,引用會讓人覺得只是乙個別名,其實有自己的儲存空間。這是c++為了實用性而做出的細節隱藏。

談一談指標和引用的區別。

1.初始化要求不同。引用在建立的同時必須初始化,即引用到乙個有效的物件;而指標在定義的時候不必初始化,可以在定義後面的任何地方重新賦值,當然指標最好初始化時置null。

2.可修改性不同。引用一旦被初始化為指向乙個物件,它就不能被改變為另乙個物件的引用;而指標在任何時候都可以改變為指向另乙個物件。給引用賦值並不是改變它和原始物件的繫結關係。

3.不存在null引用,引用不能使用指向空值的引用,它必須總指向某個物件;而指標則可以是null,不需要總是指向某些物件,可以把指標指向任意的物件,所以指標更加靈活,也更容易出錯。

4.測試需要的區別。由於引用不會指向空值,這意味著使用引用之前不需要測試它的合法性;而指標則需要經常進行測試。因此使用引用的**效率比使用指標的要高。

5.應用的區別。如果是指一旦指向乙個物件後就不會改變指向,那麼應該使用引用。如果有存在指向null(不指向任何物件)或在不同的時刻指向不同的物件這些可能性,應該使用指標。

實際上,在語言層次,引用的用法和物件一樣;在二進位制層面,引用一般都是通過指標來實現的,只不過編譯器幫我們完成了轉換。總的來說,引用既具有指標的效率,又具有變數使用的方便性和直觀性。

關於指標和引用的理解

1.指標的定義int a,a為指標變數,將int 看作整體 型別 另外 符號也可看作取值符,即對a指標取其指向位址的值。eg int a 10 int b a false int b a true 將第三句可拆為 int b b a 同上面將int 看作整體結合,即定義了b指標,不能直接將a物件賦給...

關於 指標的引用和指標值傳遞

1,形參是實參的拷貝 值一樣,儲存位址不一樣 包括指標變數,指標變數 int p a p只是儲存位址的變數。請欣賞第一段 回答輸出結果 18分 include includeusing namespace std void try change int p int b 7 p b cout p 說是...

關於指標傳遞和指標的引用傳遞

指標傳遞的實質 指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。引用傳遞的實質 在引用傳遞過程中,被調函式的形式引數雖然也作為區域性變數在棧中開...