为什么第一次迭代后的指针指向随机值?

LHC*_*012 2 c++ pointers function

这是我的代码,我认为每条提示行将打印指针指向的相应对象。为什么会出现错误?这会打印一些随机的数字列表,首先总是正确的。

int* f()
{
    int array[10] = {1,2,3,4,5,6,7,8,9,10};
    int *p = array;
    return p;
}

int main()
{
    int* ptr = f();
    cout << *(ptr+0) << endl;
    cout << *(ptr+1) << endl;
    cout << *(ptr+2) << endl;
    cout << endl;

}
Run Code Online (Sandbox Code Playgroud)

Obl*_*ica 8

您的指针指向带有自动存储的数组。当函数返回并且指针悬空时,数组死亡。

解决方案不是使用指针,而是使用向量或动态数组。