This question already has answers here:
Returning local data from functions in C and C++ via pointer
(13个回答)
Can a local variable's memory be accessed outside its scope?
(20个答案)
2年前关闭。
在这里,当我们调用x()函数时,x的激活记录被压入堆栈。当我们退出该函数时,激活记录及其中的所有局部变量都会被破坏。
那么,从x函数出来后,如何在主函数中访问y的值呢?输出值应该是一些垃圾值,因为“ y”变量被破坏了。
(13个回答)
Can a local variable's memory be accessed outside its scope?
(20个答案)
2年前关闭。
#include<stdio.h>
#include<conio.h>
int *x()
{
int y=10;
return (&y);
}
void main()
{
int *p;
clrscr();
p=x();
printf("%d",*p); // Output 10
getch();
}
在这里,当我们调用x()函数时,x的激活记录被压入堆栈。当我们退出该函数时,激活记录及其中的所有局部变量都会被破坏。
那么,从x函数出来后,如何在主函数中访问y的值呢?输出值应该是一些垃圾值,因为“ y”变量被破坏了。
最佳答案
函数x
返回指向自动局部变量的指针,并导致未定义的行为。在这种情况下,可以看到任何预期或意外的结果。
10-05 21:42