int * fun()
{
  int a = 10;
  
  return &a;}有没有错误?
说详细点。欢迎讨论。

解决方案 »

  1.   

    错,fun结束以后a就不存在了。
      

  2.   

    先试试这个:
    int* p=fun();
    int* q=fun();
    if(p==q)AfxMessageBox("=");
    else AfxMessageBox("!=");
    再看看危险性:
    int* p=fun();
    int* q=fun();
        *q=9;
    int r=*p;//哦!r是9,不是我想要的
      

  3.   

    a 是函数fun()的 自动变量, 其空间是在栈中分配的。
    当函数返回后, 此函数这一段栈都处于可写状态, 而且很快就被其他函数调用时破坏了。所以就导致所说的“临时变量,函数返回后该变量就释放”。
    可以改成这样:int * fun()
    {
      static int a = 10;  //静态变量
      
      return &a;}
      

  4.   

    各位,你们还没有给楼主解释清楚,不过我也不懂,个人认为:
      返回一个指向int的指针,如:
      int i;
      i=*fun();
    则i=10>>>>>这是事实。
      

  5.   

    To:楼上
    i=10是因为碰巧函数释放后,原来使用的内存的内容还没有被冲掉,但你不觉得这很危险吗?
      

  6.   

    akiko说得很正确.
    返回的数是一个不确定的数.
    因为a的值的有效性在{}内