【发布时间】:2018-06-12 06:19:25
【问题描述】:
char *p = "hello";
p = "hello_2";
这里字符串“hello”存储在内存中,它的地址存在于指针“p”中,但是当这个指针开始指向字符串“hello_2”时,存储字符串“hello”的内存会发生什么?它会被释放还是这个字符串仍然存在但我们无法访问它?
【问题讨论】:
-
编译器很可能会检测到第一个文字没有做有意义的事情,并将整个代码替换为
char *p = "hello_2"; -
防止修改你想要的字符串常量
const char *p = "hello";如果你打算改变它指向的字符串,只声明一个非常量字符指针。