可能重复:
可以在其范围之外访问局部变量的内存吗?
局部变量的返回地址
我有一个问题,首先看代码
#include <stdio.h>
int sum(); /* function declaration */
int main()
{
int *p2;
p2 = sum(); /* Calling function sum and coping its return type to pointer variable p2 */
printf("%d",*p2);
} /* END of main */ `
int sum()
{
int a = 10;
int *p = &a;
return p;
} /* END of sum */
我认为答案是 10 和变量 a 的地址,但是我的 tesacher 说 a 是函数的本地变量,所以 a 并且当函数返回或完成执行时,它的值将从内存位置中删除。我尝试了这段代码,答案当然是 10 和地址,我使用 GNU/GCC 编译器。谁能说出什么是对什么是错。提前致谢。