C语言 为什么此程序出现分段错误


int main() 
{
    char *d = "1234";
    char *p = d;
    p = p+2;
    p[0] = '2';    \Error line
    printf("%s", p);
}

如果我删除"错误行"行,则没有seg错误。这里有什么问题?

您正在修改常量内存。 即使您没有 const 关键字,"1234"的类型也是 const char *

哪些指针 *d 和 *p 点是只读数据。(文本段(。尝试修改它会导致错误。

您可以通过以下方式修复它:

    /* Using character arrary, initialized it with "1234" */
    char d[] = "1234"; 

    /* Malloc heap memory for"1234" */
    char *d = (char *)malloc(4); 
    strcpy(d, "1234");
    // ...
    free(d);

您还应该为终端字符"\0"添加一个额外的空格。

相关内容

  • 没有找到相关文章