<分区>
我是 C 的新手,我想执行此任务:声明并初始化一个字符串,然后将每个字符串元素重新分配给一个新值。
这样写代码:
char *str = "geeksforgeeks\0";
for (int i = 0; str[i] != '\0'; ++i) {
str[i] = 'a';
}
抛出段错误。
但是如果我这样写代码:
char string[] = "geeksforgeeks\0";
char *str = string;
for (int i = 0; str[i] != '\0'; ++i) {
str[i] = 'a';
}
程序运行正常。
还有这段代码:
char str[] = "geeksforgeeks\0";
for (int i = 0; str[i] != '\0'; ++i) {
str[i] = 'a';
}
行为正确。
两者有什么区别?不应该是等价的吗?