C 指针算术混乱



我必须回答以下代码是否编译以及结果是什么:

char *s1 = "A String";
char *s2 = "Other String";
*s1 = *s2;

当你做这样的声明时,我并没有真正发现后台会发生什么。s1 指向内存是这样的吗?

|A| |S|t|r|i|n|g||

在我的理解中*s1 = *s2s1[0] = s2[0]一样,对吧?那么为什么会出现内存错误呢?不应该吗?

|O| |S|t|r|i|n|g||

C 中的文字字符串实际上是只读字符数组,可以(也不应该(修改。

尝试修改字符串文本的内容会导致未定义的行为

在具有指向字符串文本的指针时,始终养成使用const char *的习惯。

最新更新