为什么 C 中的以下代码有效?
const char* str = NULL;
str = "test";
str = "test2";
既然 str 是一个指向常量字符的指针,为什么我们可以给它分配不同的字符串字面量呢?此外,我们如何保护 str 不被修改?例如,如果我们后来将 str 分配给一个更长的字符串,该字符串最终覆盖了另一部分内存,这似乎是一个问题。
我应该在我的测试中补充一点,我在每次分配之前和之后打印出 str 的内存地址,它从未改变过。因此,尽管 str 是一个指向 const char 的指针,但实际上内存正在被修改。我想知道这是否可能是 C 的遗留问题?