Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
可能重复: 为什么 char* 会导致未定义的行为,而 char[] 不会?
以下代码
int main() { char * st = "abc"; *st = 'z'; return 0; }
正在返回分段错误。如果堆栈上的字符串不可修改,为什么它不会在编译时给出错误?
堆栈上的变量 st 是一个指针。分配的值是一个字符串常量(只读)。
char *str = "this is dangerous to modify";不是你得到的相同意义上的字符串;它被称为字符串文字并根据标准对其进行修改会产生未定义的行为。 如果您想要一个稍后可以修改的字符串,请执行以下操作:
char *str = "this is dangerous to modify";
char str[] = "Some String";
然后相应地修改它。