在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 型別的指標...