Possible Duplicate:
why segmentation fault in this program
int main()
{
char *a="asdasd";
int i;
for(i=0;i<6;i++)
{
(*a)++;
printf("\n%s",a);
}
}
输出分段故障
int main()
{
char a[]="asdasd";
int i;
for(i=0;i<6;i++)
{
(*a)++;
printf("\n%s",a);
}
}
无分段错误
最佳答案
在第一个中,您声明一个指向char
的指针,并将指向常量char
的指针的值分配给in。在第二个中,您声明一个char
数组并将其赋给它初始值,但最终不是一个常数。在循环中,您尝试增加指针位置或数组的第一个索引处的值。由于指针一个指向常量char
,因此它将失败:您不能更改常量。但是,该阵列可以修改,因此不会失败。
关于c - 为什么在这种情况下存在段错误? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5845239/