先看一段代码
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";