char *s1 = "emma";
char *s2 = s1;
s2[0] = toupper(s2[0]);
printf("%s\n", s2);
printf("%s\n", s1);
我正在用指针搞乱和学习,但我不太明白为什么我在这里遇到段错误。我知道 toupper 函数需要一个字符,但字符串 s2 的第 0 个元素不是一个字符吗?我知道它是一个指针,但它指向一个字符,对吧?这是什么情况?
最佳答案
i don't quite understand why i'm getting a segmentation error here.
代码尝试修改字符串文字。那就是UB。制作一份副本。
UB:未定义的行为 - 可能有效,也可能以明显或奇怪的方式失败。
关于C、topper段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65268109/