const的位置與區別

2021-08-02 08:00:44 字數 1007 閱讀 3298

乙個比較經典的問題——問以下兩種宣告的區別:

1) const char * p

2) char * const p

這裡的 const 關鍵字是用於修飾常量,書上說 const 將修飾離它最近的物件,所以,以上兩種宣告的意思分別應該是:

1) p 是乙個指向常量字元的指標,不變的是 char 的值,即該字元的值在定義時初始化後就不能再改變。

2) p 是乙個指向字元的常量指標,不變的是 p 的值,即該指標不能再指向別的。

現在倒是正確說出了兩者的意思,但應該怎樣記憶它們呢?

至少我覺得我經常會忘記,以後再遇到了可能又會混淆不清。-_- !

無意間,在網上看到有人介紹了一種不錯的記憶方法,分享如下:

bjarne 在他的《the c++ programming language》裡面給出過乙個助記的方法——「以 * 分界,把乙個宣告從右向左讀」。

注意語法,* 讀作 pointer to (指向...的指標),const (常量) 是形容詞,char (變數型別) 和 p (變數名) 當然都是名詞。

1) const char * p 讀作:p is a pointer to a const char,譯:p 是乙個指標(變數),它指向乙個常量字元(const char)。

2) char * const p 讀作:p is a const pointer to a char,譯:p 是乙個常量指標(const p),它指向乙個字元(變數)。

從兩處藍色標記也能看出前面提到的「const 修飾離開最近的物件」的說法。

另外請再注意下面的情況。

先看 const int a 和 int const a,這裡沒有分界符 *,雖然 const 的位置不同,但意思不變,它 const 修飾的是 int,常量整數。

再看 const char * p 和 char const * p,首先以 * 分界,雖然 const 的位置改變了,但它都是在修飾 char,常量字元。

from:

const的位置與區別

乙個比較經典的問題 問以下兩種宣告的區別 1 const char p 2 char const p 這裡的 const 關鍵字是用於修飾常量,書上說 const 將修飾離它最近的物件,所以,以上兩種宣告的意思分別應該是 1 p 是乙個指向常量字元的指標,不變的是 char 的值,即該字元的值在定義...

const 位置與指標的關係

int b 500 const int a b 1 int const a b 2 int const a b 3 const int const a b 4 typedef char pchar pointer to char typedef const pchar cpchar const po...

const位置的含義

int num 1024 const int num2 num1 只能第一次賦值 num2 2048 報錯 const int p const 在 前面時,指標的位置可以修改,但不能通過指標修改指向的變數 int const p 同上 int const p const 在 後面時,指標的位置不可以...