【发布时间】:2017-06-20 14:17:18
【问题描述】:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char *ptr1="abcdef";
ptr1 = ptr1 +(strlen(ptr1)-1);
printf("%c",--*ptr1--);
printf("%c",--*--ptr1);
printf("%c",--*(ptr1--));
printf("%c",--*(--ptr1));
printf("%c",*ptr1);
return 0;
}
以上代码抛出分段错误错误。有人可以帮我理解背后的原因吗?
【问题讨论】:
-
原因是糟糕的、不可读的代码,可能会调用未定义的行为。
-
顺便说一句,它甚至不会编译。
-
请简要解释一下
-
它无法编译为
ptr1未定义 -
请发布可编译的代码。你是说
char *ptr1="abcdef";吗?
标签: c segmentation-fault