C++ 從函式返回指標(函式外返回區域性靜態變數的地址)
阿新 • • 發佈:2019-02-04
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; }
傳遞之後並不能得到正確的陣列的值。 原因就是在陣列內的陣列沒有設為靜態。 更改:其他位置不變,只是將返回指標的函式中的陣列變為靜態即可: