C语言中的字符指针让我感到困惑。
假设我们有一个char类型的指针,它指向字符串常量的第一个字符。
char *a="ABCD";
然后我们不能使用指针 a 更改该字符的值,因为以下语句会导致段错误。
*a='X';
现在假设我们有一个 char 指针,它指向一个字符 常量。
const char B='X';
char *ptr=&B;
在这种情况下,我们可以使用语句更改该字符的值
*ptr='Z';
我的问题是,这是否是未定义行为证明C不够健壮的情况?还是有更深层次的逻辑涉及其中?
char const *a = "ABCD"
。它们的语义不同。 - Quentin