例如:
Char *func(void) { char str[]=”Hello Word”; return str; } |
//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉。换句话说:str存储的地址是fun栈帧的helloworld的首地址,函数调用完成后,栈帧恢复到fun之前的状态,临时空间被重置,堆栈被收回。
修改:函数体内的指针变量并不会随着函数的消亡而自动释放
Char *func(void) { char *p=”Hello Word”; return p; } |
str对应的是内存中的栈,是局部变量。而为*p分配的是全局变量对应内存中的全局区域。
另外一种修改:static 为静态存储区域
Char *func(void) { static char str[]=”Hello Word”; return str; } |