以下C程序的输出是什么?当关闭后fun()的所有变量都取消分配其内存时,如何打印输出?
#include<stdio.h>
int * fun()
{
int q = 10;
int *p;
p = &q;
return p;
}
int main()
{
int *res;
res= fun();
printf("%d", *res);
return 0;
}
我希望指针res指向空
答案 0 :(得分:0)
您正在返回一个指向堆栈上地址的指针。合理的编译器会给您这样的警告:
“警告C4172:局部变量或临时变量的返回地址:q”
但是基本上,行为是不确定的,并且还取决于您的优化级别。