int main()
{
char *d = "1234";
char *p = d;
p = p+2;
p[0] = '2'; \\Error line
printf("%s", p);
}
如果我删除“错误行”行,则没有seg错误。问题是什么?
答案 0 :(得分:1)
您正在修改常量内存。即使您没有const
关键字,"1234"
的类型也是const char *
。
答案 1 :(得分:0)
什么指针* 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”添加一个额外空格。