我期待下面的代码打印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 –