const 用於指標的微妙之處

2021-10-13 14:00:29 字數 647 閱讀 2406

c++ primer plus 對 const 的使用作了較為詳細的介紹,其中將 const 用於指標存在一些微妙的地方,尤其是以下兩種用法:

int sloth =3;

const

int* ps =

&sloth;

int*

const finger =

&sloth;

若將 const 放在 int * 之前,代表 *ps 為 const,不可修改,即 ps 為乙個指向 const int 變數的指標,因此 ps 指向的數值不能被修改,但可以修改 ps 指標的指向,例如將其指向其他變數。

*ps =20;

//invalid

ps =

&other_variable;

//valid

另一種相反的定義方式為將 const 放在 int * 之後,表示指標的值 finger 本身為 const, 不可修改,即其指向無法改變,但卻可以通過 *finger 修改指標指向的數值。

*finger =20;

//valid

finger =

&other_variable;

//invalid

關鍵字CONST用於指標

通過將變數宣告為const的,可確保變數的取值在整個生命週期內都固定為初始值。這種變數的值不能修改,因此不能將其用作左值。因為指標也是變數,因此也可以將關鍵字const 用於指標。但是指標是特殊的變數,包含的是記憶體位址,可用於修改記憶體中的資料塊。如 const int dir 這種可修改指標的指...

const 指標與指向const的指標

當使用帶有const的指標時其實有兩種意思。一種指的是你不能修改指標本身的內容,另一種指的是你不能修改指標指向的內容。聽起來有點混淆一會放個例子上來就明白了。先說指向const的指標,它的意思是指標指向的內容是不能被修改的。它有兩種寫法。const int p 推薦 int const p 第一種可...

const 指標與指向const的指標

當使用帶有const的指標時其實有兩種意思。一種指的是你不能修改指標本身的內容,另一種指的是你不能修改指標指向的內容。聽起來有點混淆一會放個例子上來就明白了。先說指向const的指標,它的意思是指標指向的內容是不能被修改的。它有兩種寫法。const int p 推薦 int const p 第一種可...