警惕:return 指向栈内存的指针
源代码
/*
* return 不可返回指向栈内存的指针
*
* return 返回局部变量的值?
*/
#include <stdio.h>
char *fun1(void)
{
char str[30] = "hello world!";
return str;
}
int fun2(void)
{
int a = 10;
return a;
}
int main(void)
{
printf("in main : str : %s\n", fun1()); // 错误的示范
printf("in main : a : %d\n", fun2());
return 0;
}
编译结果
[root@localhost lwp_workspace]# gcc -g -Wall retrun_ptr.c -o test
retrun_ptr.c: 在函数‘fun1’中:
retrun_ptr.c:13: 警告:函数返回局部变量的地址
[root@localhost lwp_workspace]#
运行结果
[root@localhost lwp_workspace]# ./test
in main : str : H@
in main : a : 10
[root@localhost lwp_workspace]#