#include <stdio.h>
char *fun();
int main(int argc, const char *argv[])
{
char *p=fun();
printf("%s\n,p");
return 0;
}
char *fun()
{
char st[]="hello world";
return st;
}
在这个代码中,char st[] 是局部变量,存放在栈区,又系统自己开辟和释放。因此无法打印出“hello world”
要解决此问题,就需要引用全局变量
可以采用static 修饰:
static的本质是延长变量或函数的生命周期,同时限制其作用域。
static声明的全局变量、函数,仅当前文件内可用,其他文件不能引用。
static在函数内部声明的内部静态变量,只需初始化一次。
而且变量存储在全局数据段(静态存储区)中,而不是栈中,
其生命周期持续到程序退出。
static在函数内部声明的内部静态变量,只需初始化一次。
即:static char st[] ="hello world"