首先要解釋下為什麼文章標題只有一個因為最多30個字元!所以請見諒、
請看下面三種定義:
const char *p;
char const *p;
char * const p;
請問,三者有什麼區別呢?
筆者在之前好多家筆試題種都看到這樣的問題,今天想起又拿出重新梳理一下,便於後人學習。
首先看第一種,我們先看p,本著」從里往外」的原則,p是一個char *類型的變數,但char *前面有一個const修飾,即p所指向的內容為const類型不可修改,我們可以寫如下程序進行實驗,當試圖對p指向的數組的第一個元素進行修改時,編譯即可發現報錯:
C語言C++學習交流369203660
第二種:char const *p; const位於char *之間,由於char *是p的類型,此種寫法和const char *等價,大家可以自行實驗,如下圖:
C語言C++學習交流369203660
最後一種,char * const p; 這裡const在p之前,修飾的是p,即p是不可修改的,所以,我們可以實驗:
C語言C++學習交流369203660
可以看到沒有錯誤,p所指向的內容可以修改,而如果試圖修改p的值,如下:
C語言C++學習交流369203660
可以發現依舊是報這個錯誤,大家可以親自上機實驗,來加深理解。或者加學習交流群C語言C++學習交流369203660