指標常量和常量指標的區別
C++中指標常量和常量指標的區別
指標常量 和 常量指標這兩個詞其實翻譯得不是很合適,所以導致大家對這兩個概念容易混淆,從英文角度去理解會更容易。
一、指標常量是什麼?
指標常量是由英文pointer to const
翻譯而來的,看到英文,相信大家不會再搞不清楚它的意義,它代表著一個指向const
型別變數的指標。
那麼很明顯,指標的指向是可以修改的,因為它只是個pointer,而指標指向的值是const,是不允許修改的。
二、常量指標是什麼?
常量指標是由英文const pointer
翻譯而來的,const
修飾的是pointer
,說明指標是不可以修改的,因為pointer
是常量,但指標指向的值是可以修改的。
三、如何記憶和區別它們
1.字面上區別它們
不管是常量指標還是指標常量,轉換成英文都少不了const 和 pointer 兩個單詞。
-
對於指標常量,指標-pointer,常量-const,拼在一起是pointer const,是不是很彆扭,但是我們不改變兩個單詞的順序,只在中間加上一個
to
,就會變得很自然,pointer to const,它的意義也就顯現出來了。const的是指標指向的值。 -
對於常量指標,常量-const,指標-pointer,直接拼在一起,就成了const pointer,其意義也就顯而易見了,const的是指標本身。
2.程式碼上區別它們
星號*前面的是對被指向物件的修飾,星號*後面的是對指標本身的修飾。
例項:
常量指標:
int main()
{
//pointer to const 指標常量
int a = 1;
int b = 2;
int const* p = &a;
//*p = 2; error 指向的是常量,不可修改
p = & b;
}
指標常量:
int main()
{
//const pointer 常量指標
int a = 1;
int b = 2;
int *const p = &a;
*p = 2;
p = & b;//error 指標是一個常量,不可修改指向
}
小技巧:我們可以先把int const p寫下來,再決定星號*加在哪裡
- 如果是pointer to const,就寫作int const* p,因為
星號前是對被指向物件的修飾
,現在我們希望被指向物件是一個const。 - 如果是const pointer,就寫作int* const p,因為
星號後是對指標的修飾
,現在我們希望指標是一個const。
四 Test Yourself!
下面6道題如果大家能準確說出中文或者英文意義,那麼就算過關啦~~
①const int p;
②const int* p;
③int const* p;
④int * const p;
⑤const int * const p;
⑥int const * const p;
1 整形常量p; const int
2 指向整形常量的指標p; pointer to const int
3 指向整型常量的指標p; pointer to const int
4 指向整形的常量指標p; const pointer to int
5 指向整形常量的常量指標p; const pointer to const int
6 指向整形常量的常量指標p; const pointer to const int
以上就是我個人的一些簡單的理解,希望能幫助到大家,如果有問題或者錯誤,歡迎大家在評論區指出,如果看到一定會回覆或者及時改正,謝謝大家。
參考連結:如何理解常量指標與指標常量?
相關文章
- 指向指標的常量引用瞭解指標
- 字串指標與字元陣列的區別--字串常量的值不能改字串指標字元陣列
- 【C++系列】指標物件和物件指標的區別C++指標物件
- 指標和引用的區別指標
- 智慧指標和普通指標的區別指標
- 常量引用或指向常量的指標,其所指物件可以是非const物件(C++)指標物件C++
- Golang 學習——陣列指標和指標陣列的區別Golang陣列指標
- go 方法接受者 是指標型別和非指標型別的 區別Go指標型別
- 詳解c++指標的指標和指標的引用C++指標
- C語言指標(三):陣列指標和字串指標C語言指標陣列字串
- C/C++引用和指標的聯絡和區別C++指標
- 指標函式 和 函式指標指標函式
- golang中 值型別,指標,引用的區別Golang型別指標
- 第 10 節:複合型別-5. 指標 -- 指標與指標變數 -8. 多級指標型別指標變數
- PHP 定義常量 define 和 const的區別PHP
- jmeter軟體指標和硬體指標(16.5)JMeter指標
- Go: 指標方法與值方法<->指標型別與值型別Go指標型別
- 指標和標籤的基礎理解指標
- c指標型別的作用指標型別
- 陣列指標,指標陣列陣列指標
- php定義常量方法的區別PHP
- 1.0 - 指標和引用指標
- All I know about A/B Test (1) : 均值型指標與比值(率)型指標的計算區別指標
- [C++] 成員函式指標和函式指標C++函式指標
- 指標指標
- Go 陣列指標(指向陣列的指標)Go陣列指標
- 指標陣列與陣列指標指標陣列
- 2020-12-6(從反彙編理解指標和引用的區別)指標
- 指標陣列和陣列指標與二維陣列指標陣列
- 如何正確理解「指標」和「標籤」指標
- 指標的用法指標
- 指標的理解指標
- GO 空指標和nilGo指標
- const 變數和指標變數指標
- C陣列和指標陣列指標
- C指標原理(14)-C指標基礎指標
- C指標原理(15)-C指標基礎指標
- 比如,一級指標、二級指標等,通過不同層級的指標資料指標