K.H*_*A.S 1 c string segmentation-fault
为什么我在下面给出的代码中遇到分段错误?
char getstr()
{
static char s[]="Hiii2015";
return s;
}
int main()
{
printf("%s",getstr());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
虽然我知道我正在使用char返回类型返回一个地址,并且返回类型必须char*但仍然如果我这样做只有那时我在gcc编译器上获取null并且在另一个编译器上出现分段错误那么这是什么原因
你的退货类型getstr()是错误的.
它char应该是const char *或者char *,即指针.
你按原样将返回的指针压缩到char(可能只有8位),然后尝试访问那个非常低的地址,printf()从而为你提供未定义的行为.
您应该已经收到编译器警告.