我期待下面的代碼打印1,但它的打印數量是隨機的。 我不明白爲什麼會發生這種情況,請指教。C++傳遞指針
#include <iostream>
using namespace std;
int * returnArray()
{
int myArray[5]={1,2,3,4,5};
return myArray;
}
void printArray(int * myArray)
{
cout << *myArray<< endl;
}
int main()
{
printArray(returnArray());
}
'returnArray'中的數組正在堆棧中分配,與其他本地變量相同。當'returnArray'返回時,用於存放數組的內存從堆棧彈出,並可以自由用於其他目的。如果你想要一個數組持續超出聲明的範圍,你必須使用'new'來分配它。 – luqui
http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope/6445794#6445794 < - 所以,你租一個酒店房間 –
@luqui你也可以malloc –