這個老是容易搞混,以前很清楚,但過一段時間不用,又忘了,因此今天整理成部落格,以備以後查詢。
const char *型別的指標(指向常量的指標),其所指向的內容為常量,是不可以修改的,但其指標值是可以修改的。
例如 char str="hello"; //定義乙個字元陣列
const char *pstr=str; //把位址賦給指標常量
*pstr='w';// error
pstr=「world」; //right
pstr被定義為指標常量,即它指向的字串是常量,不可以修改,但pstr本身為指標,表示乙個位址值,可以修改指向其他位址。
char* const 型別的指標(常量指標),其位址值是乙個常量,不可以修改,但其指向的記憶體值可以修改。
例如 char str="anything"; //定義乙個字元陣列
char*const pstr=str; //把位址賦給常量指標
*pstr="k"; //right
pstr="null"; //error
pstr被定義為常量指標,即它的值,所指向的記憶體首位址是不可以修改的,但是其所指向的字串是可以修改的。
寫到這,我又感覺到學好語文多麼重要。語文素養高可以幫助我們很多,最直接的是幫助我們理解字面的含義。比如常量指標,和指標常量。首先,常量指標,可以這麼理解,常量二字修飾的是指標,即指標(位址)是常量,不可以修改;指標常量,可以這麼理解,指標修飾的是常量,即指標所指向的內容不允許修改。
另外,在傳遞函式形參時,如果我們不想形參修改我們傳遞的字串,可以把形參定義為指標常量,即const char *型別。
例如 void fun(const char * pstr){};
常量指標與指標常量的區別
一 區別 區分是常量指標還是指標常量,關鍵要看const修飾的是誰。int const與const int表達的意思是一樣的。常量指標 本質是指標,並且這個指標是乙個指向常量的指標,指標指向的變數的值不可通過該指標修改。其格式為 int const p或者 const int p指標常量 本質是乙個...
常量指標與指標常量的區別
const 常量 指標 const int p int const p 常量指標 int const p 指標常量 常量指標通常指向常量,不能通過指標去修改常量的值。有時也會指向變數,eg int s 10 const int p s 但還是不能通過指標去修改指向的常量的值,可以通過 s 20,去修...
指標常量與常量指標的區別
指標常量是乙個常量,常量不可修改,而指標常量就是這個指標不可被修改 比如陣列名就是乙個指標常量 int a 2 int b 2 a b 報錯,陣列名是乙個指標常量,該指標不能被修改,賦值 a 2 不報錯,a代表a指標所指向的內容,該內容不是常量,可被修改常量指標是乙個指標,該指標指向乙個常量,指向的...