徹底理解 指標常量和常量指標 指向常量的常指標

2021-10-10 02:53:07 字數 1643 閱讀 4386

在漢語中,定語一般都放在中心詞的前面,像c語言和c++語言這種技術性語言,更是如此。

所以定語重要還是中心詞重要,肯定是中心詞重要。

如:美麗的女孩 美麗的是定語 女孩是中心詞

女孩肯定是重要,是本質。

同理,我們先不講技術,先從字面意思來理解:指標常量、常量指標、函式指標、指標函式、陣列指標、指標陣列

指標常量

指標是定語,常量是中心詞,所以指標常量本質是乙個常量

常量指標

常量是定語,指標是中心詞,所以常量指標本質是乙個指標

函式指標

本質上是乙個指標,那就是指向函式的指標

指標函式

本質上是乙個函式,只不過函式的型別是指標

陣列指標

本質上是乙個指標,只不過是指向陣列的指標

指標陣列

本質上是乙個陣列,只不過陣列元素都是指標

巧記: const的作用就是將被修飾者限定為常量,所以const修飾誰,誰就是常量。

指標常量(指標本身是常量)

定義: 本質是乙個常量,而用指標修飾它。指標常量的值是指標,這個值因為是常量,所以不能被賦值。

關鍵點:

它是個常量!

指標本身是常量,指向的位址不可以變化,但是指向的位址所對應的內容可以變化;

int

* const p;

白話解釋:

int a =

10, b =20;

int* const p =

&a;*p =30;

// p指向的位址是一定的,但記憶體位址空間中的內容可以修改

巧記:常量在指標前面, 程式語言: const在星號之前即可。

定義:又叫常指標,可以理解為常量的指標,指向的是個常量

關鍵點:

常量指標指向的物件不能通過這個指標來修改,可是仍然可以通過原來的宣告修改;

常量指標可以被賦值為變數的位址,之所以叫常量指標,是限制了通過這個指標修改變數的值;

指標還可以指向別處,因為指標本身只是個變數,可以指向任意位址;

int const* p;  const int

* p;

常量指標本質上是乙個指標,常量表示指標指向的內容,說明該指標指向乙個「常量」。在常量指標中,限制了通過這個指標修改變數的值,指標看起來好像指向了乙個常量。用法如下:

int a =

10, b =20;

const int

*p =

&a;p =

&b;// 指標可以指向其他位址,但是內容不可以改變

判斷程式的對錯:

int

main()

int

main()

這樣寫就能在vs2017和vs2019上編譯通過了。

定義: 指向常量的指標常量就是乙個常量,且它指向的物件也是乙個常量。

關鍵點:

乙個指標常量,指向的是乙個指標物件;

它指向的指標物件且是乙個常量,即它指向的物件不能變化;

const

int*

const p;

常量指標和指向常量的指標

首先指出乙個錯誤,壓根就不應該有指標常量這個說法。經常聽到有關常量指標和指標常量的討論,也經常見到有關兩者區別的文章,然而,有些文章卻誤導了讀者,他們的結論根本就是錯的。例如關於指標常量和常量指標的討論,結果完全顛倒了 而其他一些文章呢,充其量只是火上加油,讓本來就很複雜的事情變得更加難於理解,例如...

常量指標和指向常量的指標

1 常量指標 指標本身的位址值不可修改,這個值是定義指標的時候確定的,以後不可再改變。定義 int const i new int i是常量,執行i 會出錯 const修飾的是i,所以i不能變。2 指向常量的指標 該指標指向的變數是不可修改的。定義 const int i new int 100 或...

常量指標和指向常量的指標

經常c 程式設計師會提到 常量指標 const pointer 其實他們想表達的意思往往是 指向常量的指標 pointer to const 真不幸,這是兩個完全不同的概念。t pt new t const t pct pt 乙個指向常量的指標 t const cpt pt 乙個常量指標這裡一定要弄...