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年前关闭。
            
                    
#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