C 常量指標 指標常量 引用和常引用的用法解析

2021-08-15 09:40:01 字數 1294 閱讀 4384

今天學習c++的常量型別和引用,其中常量指標、指標常量、引用和常引用幾個概念較為接近,特地整理一下。

1.常量指標(pointer to const)

常量指標,顧名思義,是指向常量的指標,其定義的一般形式為:const t * pointer_name =⌖ t為資料型別,target為t類資料。

常量指標本身是可變數,而且,雖然名為常量指標,但其指向可以是變數,只不過,從常量指標的角度看,它所指向的量是不可變的,也就是說不能通過該指針對其指向的變數進行修改。所以準確的說,常量指標,意思是在這個指標眼裡,它所指向的量是不可改變的常量。

在使用過程中,指向變數的指標,可以向常量指標賦值,只不過賦值之後不能通過常量指針對該變數進行修改。而常量指標不能向指向變數的指標賦值,因為並不能確定常量指標指向的資料是否可以被修改,容易產生安全性問題。常量指標的主要用法在於保護輸入的形參,當輸入的形參通過指標傳遞的時候,最好採用常量指標,以防止不小心對輸入的形參進行了修改。

2.指標常量(const pointer)

指標常量,即為const型別的指標,指標本身的指向不可以改變,定義形式:

t *const pointer_name =⌖ t為資料型別,target為t類資料,且為變數。

由於是const型別,所以必須在定義的時候進行初始化並在之後不能更改。但是其所指向的是變數,可以修改。即指標常量本身不能改變,但是可以改變其所指向的變數。

如果將指標變數和變數指標結合起來,得到常量指標常量,則指標和所指向的量均不可修改。

3.引用(reference or alias)

引用,是用作物件的別名。其定義形式為:

t&reference_name =target; t為資料型別,target為t類資料

引用在一定程度上可以取代指標,主要用作函式的形參。引用必須在初始化的時候確定被引用的的物件,一旦確定引用物件則不可更改。這一點和指標常量類似。不過存在例外,當引用作為類的成員變數和函式形參定義時,不必進行初始化。同時引用初始化的物件必須為可以被賦值的左值。在函式形參通過指標傳遞時,可以使用引用來實現同樣的功能,並且引用的指向不會發生變化,因此更加安全。

4.常引用(constant reference)

常引用即的被引用物件不可通過常引用改變,性質與常量指標類似,可以用來保護函式輸入形參不發生變化。其定義為:constt &reference_name =target; t為資料型別,target為t類資料。同時常引用的引用物件可以守任意表示式,不侷限於左值。

引用,指標,常量引用,常量指標,指標常量的區別

1.指標 指標代表乙個變數的位址 例如 int a 2,b 1,pi a pi b 2.引用 引用即針對乙個變數的別名,引用必須被初始化,引用作為引數 形參 時,不會像指標一樣使用儲存單元,更不會像值傳遞一樣建立該引數的副本,提高空間 時間效率。例如 int a 2,b a 3.常量引用 格式為 c...

指標和引用與及指標常量和常量指標

1.存在空指標,但是不存在空引用。2.指標可以不初始化,而引用必須初始化,並且,引用的目標一旦確定,後面不能再更改,指標可以更改其指向的目標。3.指標是乙個實體,而引用僅是個別名。4.引用是型別安全的,而指標不是 引用比指標多了型別檢查 5.指標和引用的自增 運算意義不一樣,對引用的操作直接反應到所...

區別 指標常量 指標變數 常量指標和常量指標常量

1.指標變數 指標值 即指標的指向 可以改變的指標,只能指向變數 2.指標常量 指標值 即指標的指向 不能改變的指標,只能指向變數,但可以修改指向的實體變數的值 3.常量指標 指向常量的指標,所以不能修改指向的實體的值,但可以修改指標的指向 即可以指向別的常量,必須是常量 4.常量指標常量 指向常量...