请指出该程序的错误。
#include <iostream.h>int *p;void Function()
{
     int n;
     n = 25; 
     p = &n;
}void main()
{
     Function(); 
     cout<<"value of *p: "<<*p<<endl;
}

解决方案 »

  1.   

    局部变量n在function()函数结束后被释放,p指向无效区域,*p不知是什么了.
      

  2.   

    局部变量n在function()函数结束后被释放,p指向无效区域,*p不知是什么了.对是这样了
    应该改成
    #include <iostream.h>int *p;void Function()
    {
         int n;
         n = 25; 
       
         p = new int;
         *p = n}void main()
    {
         Function(); 
         cout<<"value of *p: "<<*p<<endl;
    }
      

  3.   

    在大多数情况下,你的程序的结果是正确的。因为
    int n;
    虽然是个局部变量,他在退出Function函数后会被释放,但被释放的这2byte在cout语句执行前被分配掉的可能性比较小。这里面的值将保持不变。
    不过一旦这2byte被分配掉了,里面是什么值都有可能。
      

  4.   

    多谢各位, 可是我用原来的代码执行了一下, 怎么结果是正确的?
    value of *p  25
      

  5.   

    就象yeyuboy(夜鱼) 所说的那样的情况,只是大可能性的(99%吧,因为你的程序太简单)偶然,但是不保证正确,