在下面的C代码中获取分段错误?

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并且在另一个编译器上出现分段错误那么这是什么原因

unw*_*ind 5

你的退货类型getstr()是错误的.

char应该是const char *或者char *,即指针.

你按原样将返回的指针压缩到char(可能只有8位),然后尝试访问那个非常低的地址,printf()从而为你提供未定义的行为.

您应该已经收到编译器警告.