如何让它显示数组的实际值,而不是指针值(其实真的不知道"-8589934604"是什么意思)



//我真的无法找出这段代码中的错误,也无法获得零的初始数组值。

#include <iostream>
int* create()
{
int arr[5] = { 0,0,0,0,0 };
return arr;
}
void disp(int arr[])
{
for (int j = 0; j < 5; j++)
{
std::cout << arr[j];
}
std::cout << std::endl;
}

int main()
{
int* mat = create();
std::cout << mat[2] << std::endl;
disp(mat);
}
//what it displays:
0
-858993460-858993460-858993460-8589934604

您的代码无法为我运行。我收到警告"返回了局部变量"arr"的地址;。当您使用这样的数组引用时,应该使用动态数组来避免此类错误。我相应地更改了arr,它起作用了。

int* create()
{
int * arr = new int[5] {0,0,0,0,0};
return arr;
}

然而,现在arr在不再使用时不会被破坏。如果您反复调用这个创建函数,您应该创建自己的容器,该容器具有适当的析构函数,或者使用标准库提供的现代容器之一(std::vector,std::array(。

相关内容

最新更新