如何返回静态变量有所作为?

Dhr*_*wat 0 c

int main(){    
  char *s ;
  char *fun( ) ;
  s = fun( ) ;
  printf ( "%s", s ) ;
}

char *fun( ){    
  char buffer[30] ;
  strcpy ( buffer, "RAM - Rarely Adequate Memory") ;
  return ( buffer ) ;
}
Run Code Online (Sandbox Code Playgroud)

为什么上面的代码打印出不可预测的结果?如何使char buffer [30]静态帮助?

unw*_*ind 5

static对于程序的整个运行时,存在一个变量,与普通的"自动"变量不同,该变量仅在其父作用域存在时才存在.

如果确实返回了指向非static变量的指针,则表示调用者获取对内存的引用,当被调用函数返回时,该引用不再保留它在函数内所执行的操作.调用者无法有效访问该内存,这样做会调用未定义的行为.