C 指標與const關鍵字

2021-10-03 11:24:38 字數 1808 閱讀 3231

c++中,我們經常使用const關鍵字來定義常量,這是const的基礎用法。然而,當const指標變數結合起來時,情況就會變得稍稍複雜,下面講解const指標變數結合的三種形式。

const關鍵字在指標型別之前定義,我們稱這種情況為常量指標,形式如下:

int a =

10, b =20;

const

int* p =

&a;

需要注意的是,常量指標的指向可以改變,但是它指向的記憶體中的值不能修改。這是什麼意思呢?看看下面這段**:

int a =

10, b =20;

const

int* p =

&a;// 修改指標的指向

p =&b;

// 修改指標指向的記憶體中的值

*p =

100;

// 這段**無法執行,編譯報錯

看懂了嗎?p = &b;這條語句就是修改指標p的指向,將其指向另乙個變數b,儲存b的位址,而*p = 100;這條語句由於const關鍵字的限定,無法執行。

指標常量是指const關鍵字寫在指標型別後,指標變數前,如下所示:

int a =

10, b =20;

int*

const p =

&a;

這種情況下,指標的指向無法修改,但是指標指向的值可以修改,如下所示:

int a =

10, b =20;

int*

const p =

&a;// 修改指標的指向

p =&b;

// 編譯報錯

// 修改指標指向的值,可以執行

*p =

100;

我不確定這種情況是不是叫做死指標,姑且就這麼命名。這種情況下,在指標型別前使用const關鍵字,在指標型別後、變數名前再加乙個const關鍵字,形式如下:

int a =

10, b =20;

const

int*

const p =

&a;

這種情況下,無論是指標的指向還是指標指向的值,都無法修改。也就是說:

int a =

10, b =20;

const

int*

const p =

&a;// 修改指標的指向,編譯報錯

p =&b;

// 修改指標指向的值,編譯報錯

*p =

100;

指標變數const關鍵字有三種結合形式,分別為常量指標指標常量死指標

const關鍵字與指標

1 const修飾指標的四種形式 a.const是關鍵字,在c語言中原來修飾變數,表示這個變數是常量。const int inum 10 和 int const inum 10 的效果是一樣的。b.const修飾指標有4種形式。區分清楚這4種即可全部理解const和指標。1 const int p ...

const關鍵字與指標

const關鍵字與指標 const修飾指標的4種形式 1 const.關鍵字,在c語言中用來修飾變數,表示這個變數是常量。2 const修飾指標有4種形式,區分清楚這4種即可全部理解const和指標。第一種 const int p 第二種 int const p 第三種 int const p 第四...

const 關鍵字與指標

一.入門 概念引入 定義乙個 int 型別的普通變數 val 假設它的值是 10。再定義乙個指向該變數的指標 val ptr 它儲存了 val 的位址。1 int val 10 2 int val ptr val 乙個 int 型別的變數儲存的是 int 型別的值,同理,乙個指向 int 型別的指標...