先看一段代碼
char str[12] = ""Hello; char *P = str; *p = 'h';//改變第一個字母 char *ptr = "Hello"; *ptr = 'h'; //錯誤
字符串可以用字符指針char*、字符數組等來表示。
第一個字符串使用數組開辟的,他是可以改變的量。
字符串指針變量ptr本身是一個變量,用於存放字符串的首地址。可以改變ptr使他指向不同的字符串,但不能改變ptr所指的字符串常量。因為定義指針時,編譯器並不為指針所指向的對象分配空間,他只是分配指針本身的空間,所以“Hello”會被當成常量。放到.rodata區域。參考:剖析.o文件ELF組成
為了提醒自己別犯錯誤,也是提倡的寫法
const char* ptr = "Hello";