这是我的代码,我认为每个 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/