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/

10-10 17:27
查看更多