相关疑难解决方法(0)

为什么在写入用"char*s"而不是"char s []"初始化的字符串时会出现分段错误?

以下代码在第2行接收seg错误:

char *str = "string";
str[0] = 'z';  // could be also written as *str = 'z'
printf("%s\n", str);
Run Code Online (Sandbox Code Playgroud)

虽然这非常有效:

char str[] = "string";
str[0] = 'z';
printf("%s\n", str);
Run Code Online (Sandbox Code Playgroud)

经过MSVC和GCC测试.

c c-strings segmentation-fault

277
推荐指数
10
解决办法
7万
查看次数

在C中初始化字符串

可能重复:
char*str ="STRING"和char str [] ="STRING"之间的区别?

我写了以下代码:

int main()
{
    char *str = "hello";
    str[0] = 'H';
    printf("%s\n", str);
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个分段错误,我不明白为什么.

strpointer to char不是const char.即使是这样的情况也不应该像下面的程序那样给出编译错误:

int main()
{
    const char *str = "hello";
    str[0] = 'H';
    printf("%s\n", str);    
}
Run Code Online (Sandbox Code Playgroud)

它给出了一个错误:assignment of read-only location *str.

编辑

如果我的代码将指针放在只读位置,我不应该得到编译错误?

c arrays string

1
推荐指数
1
解决办法
157
查看次数

标签 统计

c ×2

arrays ×1

c-strings ×1

segmentation-fault ×1

string ×1