根据我的课本,
char *p =“你好”;
const char *p =“你好”;
char *const p =“你好”;
但是这是我在可以修改字符串的不同情况下的输出 -
#include <stdio.h>
int main() {
// Write C code here
char *p = "hello";
*p = 'a';
//p = "bye";
printf("%s",p);
return 0;
}
输出:分段错误
#include <stdio.h>
int main() {
// Write C code here
char *const p = "hello";
*p = 'a';
//p = "bye";
printf("%s",p);
return 0;
}
输出:分段错误
您不能更改字符串文字。任何更改字符串文字的尝试都会导致未定义的行为。
来自 C17 标准(6.4.5 字符串文字)
7 未指定这些数组是否不同,只要它们的 元素具有适当的值。 如果程序尝试 修改这样的数组,行为是未定义的。