1. 程式人生 > >C++ 從函式返回指標(函式外返回區域性靜態變數的地址)

C++ 從函式返回指標(函式外返回區域性靜態變數的地址)

C++ 不支援在函式外返回區域性變數的地址,除非定義區域性變數為 static 變數。

錯誤程式碼:

int main(){
 
    int *p;
    p=funcGetPointer();
    for (int i = 0; i < 10; i++)
    {
        cout<<"*(p+"<<i<<"):  ";
        cout<<*(p+i)<<endl;
    }
    return 0;
}
 
//函式返回指標
int * funcGetPointer(){
 
    int arr[10];
    srand((unsigned)time(NULL));
    for (int i = 0; i < 10; i++)
    {
        arr[i]=rand()%7+2;
    }
    cout<<"The contents is:"<<endl;
    for (int i = 0; i < 10; i++)
    {
        cout<<arr[i]<<"  ";
    }
    cout<<endl;
    return arr;
}

傳遞之後並不能得到正確的陣列的值。 原因就是在陣列內的陣列沒有設為靜態。 更改:其他位置不變,只是將返回指標的函式中的陣列變為靜態即可:


執行結果: