C++ Primer學習筆記——復合類型
????引用
引用有兩種:左值引用和右值引用,此處先討論左值引用。
引用只是給變量起了另一個名稱,在初始化時,并非將初始值拷貝給引用變量,而是與該變量綁定在一起。在使用引用時,必須要用左值對其進行初始化。
????指針
指針是一個專門用于存儲內(nèi)存地址的特殊類型變量,可以使用指針來間接訪問它指向變量。
在使用指針時,程序員必須明確清楚,該指針是指向了一個有效的變量,避免試圖解引用一個指向未知變量的指針(又叫做“野指針”),因為我們不知道其指向的地址的值是什么。
? C++11中新添加了nullptr字面值來說明指針為空指針,在C++程序中盡量使用nullptr,而不要使用NULL或0。(Effective?Modern?C++中有詳細說明,這本書up主只看了一點,還沒有看完)
指針作為條件判斷來使用
void*指針比較特殊,可以用于存放任何指針類型的指針,也可以存放任何類型變量的地址。
指向指針的指針(就是套娃,一層套一層)
總結(jié)
指針和引用的區(qū)別如下(這也是up主在剛畢業(yè)找工作面試中遇到過最多的問題之一)
指針是一個具體的變量,它存儲的是一個變量的內(nèi)存地址,而引用不是,引用只是某個變量的別名,并與其原始變量共存。
指針可以在其程序的生命周期內(nèi)進行賦值和拷貝,而引用不允許這些操作,它始終只服務于一個對象(或變量)。
指針可以不用初始化,但是引用被定義后必須要指明被綁定的對象,即必須被初始化。

標簽: