char *s1 = "emma";
char *s2 = s1;
s2[0] = toupper(s2[0]);
printf("%sn", s2);
printf("%sn", s1);
我一直在摆弄指针,但我不太明白为什么我会在这里出现分割错误。我知道toupper函数需要一个char,但字符串s2的第0个元素不是char吗?我知道这是一个指针,但它指向的是一个字符,对吧?这是怎么回事?
我不太明白为什么这里会出现分段错误。
代码试图修改字符串文本。这就是UB。复制一份。
UB:未定义的行为-可能有效,可能以明显或奇怪的方式失败。