我有这个函数意味着将多维2d(6x6)数组初始化为零。我在main中调用函数使用cout来测试它并输出垃圾。请帮忙。谢谢!
int** initializeArray(void)
{
typedef int* rollArray; //this line is actually outside of the function in my
//program
int i, j;
rollArray *m = new rollArray[6];
for (i = 0; i < 6; i++)
m[i] = new int[6];
for (i = 0; i < 6; i++)
for (j = 0; j < 6; j++)
m[i][j] = 0;
return m;
}
答案 0 :(得分:1)
如果在编译时知道值6,我建议以嵌套方式使用std::array
。例如:
#include <array>
#include <iostream>
int main()
{
std::array<std::array<int,6>,6> a = {0};
for (int i = 0; i < 6; ++i)
{
for (int j = 0; j < 6; ++j)
{
std::cout << a[i][j] << std::endl; // Prints 0.
}
}
return 0;
}
实际上,您甚至不需要创建一个函数来初始化数组。声明你的嵌套数组,你很高兴。 (如果您在编译时不知道维度,则可以以类似的方式使用std::vector
。)
答案 1 :(得分:0)
问题在于您的测试 你怎么能搞砸这么简单的测试?只需使用:
int ** a = initializeArray();
int i,j;
for (i = 0; i < 6; i++) {
for (j = 0; j < 6; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}