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

标签 c++ function pointers

这是我的代码,我认为每个 cout 行都会打印指针指向的相应对象。为什么会出现错误呢?这会打印一些随机的数字列表,第一个总是正确的。

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;

}

最佳答案

您的指针指向具有自动存储功能的数组。当函数返回并且指针悬空时,数组就会消失。

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

关于c++ - 为什么第一次迭代后的指针指向随机值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59044858/

相关文章:

c++ - C++ 中二进制文件的读写

c++ - 使用对象的生命周期作为 setter 的安全性

swift - 如何通过发送者以外的标签调用特定的UIButton?

c - int (* f [])(); 和有什么区别和 int f[]();

c++ - MessageBox 不打印 UNICODE 字符

c++ - 通过 for 循环对 2D vector 进行 Push_back

c++ - 将仿函数或函数作为参数传递

function - 试图理解 OCaml 中的这段代码

c++ - 指针表达式 : *ptr++, *++ptr 和++*ptr

c - 指针重新分配