的C指针算术混乱[重复]

问题描述 投票:-2回答:1

我如果下面的代码编译,哪些是结果来回答:

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

我真的没有发现在后台,当你做这样的声明会发生什么。为S1指向内存这样看?:

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

在我的理解*s1 = *s2就像s1[0] = s2[0]一样的,对不对?那么为什么会出现内存错误?不应该说,它是?:

|O| |S|t|r|i|n|g|\0|
c string pointers
1个回答
1
投票

用C文字字符串真的只读字符数组,并可以(也应该)不会被修改。

试图修改字符串文字线索的内容undefined behavior

始终使其具有指向字符串常量时使用const char *一种习惯。

© www.soinside.com 2019 - 2024. All rights reserved.