06const char *、char const *、char *const三者之間的區別
阿新 • • 發佈:2022-03-13
const int abc = 12;//abc是常量不能改變abc的值 char *p 和 const 混用 char str[] = "q-wertyuiop"; char* p; p = str; *p = 'Y';//*p除非在定義中,否則就代表p所指向的記憶體地址。(*p在=的左邊) p++; //Y-wertyuiop,p指向了-wertyuiop (1)const char *p; char str[] = "q-wertyuiop"; const char* p;//============p所指向的內容不能通過p來修改(p所指向的目標,那個目標中的內容不能通過p來修改) p = str;//指向 // *p = 'Y';//*p除非在定義中,否則就代表p所指向的記憶體地址。(*p在=的左邊) //--^---就有語法錯誤了 p++;//p往下指是可以變化的,地址可以變化 //但是它可以通過str[]來修改 str[0] = 'Y';//這是OK的 (2)char const *p; //char const *p 等價於 const char *p; =========== (3)char * const p; char str[] = "q-wertyuiop"; char* const p = str;//定義的時候必須初始化 //--------^---> p一旦指向了一個東西之後,就不可以再指向其他東西了。 //強調:指向了這個記憶體,就不可以指向這個記憶體的下一個記憶體。 //p++;//這就不可以了。。。===^^^^===================================================== //但是可以指向這個記憶體的內容可以修改,內容可以修改。 (4) const char * const p = str; //same: char const *const p = str; //p的指向的記憶體不能改變,而且,記憶體中的內容也不能通過p來改變