1. 程式人生 > >棧區返回變數的值和變數的地址區別

棧區返回變數的值和變數的地址區別

 int fun()
    {
        int a = 10;
        return a;
    }
    
    int *fun2()
    {
        int a = 10;
        return &a;
    }
    
    int *fun3()
    {
        static int a = 10;
        return &a;
    }

int b = fun();

//b呼叫fun函式呼叫完畢,b=10,int b = fun() 執行完畢後,a這邊記憶體地址,也就釋放了,b有可能是10

int *p = NULL;

p = fun2();

//一樣,呼叫fun2函式呼叫完畢後,a這邊區域也被釋放了,p指向a的區域,指標p也就成了野指標

int *fun3(){

  static int a = 10; //a儲存在全域性區,有一個好處,程式執行完畢,這片記憶體區域才釋放

 return &a

}