const在C中修飾指針
比如:
const char *a = "a";
char * const b = "b";
const char * const c = "c";
const在類型前,修飾的是內容;在變量名前,修飾的是指向。
例:
a = "xxx";
√
*a = 'a';
×
b = "xxx";
×
*b = 'b';
√
c = "xxx";
×
*c = 'c';
×
總結
這種問題如果不深究的話,就記住。
推測
-
const char *字面上看,很容易理解爲指向不能修改,但是其內容可以所以修改。
-
char * const字面上看,指向隨意修改,內容不能修改。
-
char * const b,const在變量名b前,而變量的類型是char *型,所以const修飾了一個類型爲char *的b變量,所以指針b不能改變其指向,但是沒有限定其內容,所以可以修改其內容。
-
const char *a,const在char *前,則表示const修飾一個指針類型爲char的變量,這個變量名爲a,所以變量名爲a的內容不能改變,但是其指向可以改變。
以上都是個人推測,如果想知道準確的解釋的話,這得去查看const變量在系統中如何存儲的吧!
如果有更好的理解,請留言,或者聯繫我,不甚感激。