相关疑难解决方法(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 ++时出现访问冲突错误

可能重复:
为什么在写入字符串时会出现分段错误?

以下简单函数应该反转字符数组.

void reverse(char* str)
{
    char* last = str;

    // find end of the string
    while(*last) {
        ++last;
    }

    // swap characters until the pointers meet in the middle
    while(str < last)
    {
        --last; 
        char temp = *str;
        *str = *last;
        *last = temp;
        ++str;
    }
}

int main()
{
    char* a= "Hello";
    reverse(a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

代码编译.但它会引发有关访问冲突的运行时错误.根据调试器,罪魁祸首是以下行:

char temp = *str;
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会发生?

c++ char

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

标签 统计

c ×1

c++ ×1

c-strings ×1

char ×1

segmentation-fault ×1