多维数组函数输出垃圾?

时间:2013-07-18 23:19:04

标签: c++ multidimensional-array dynamic-arrays

我有这个函数意味着将多维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;
}

2 个答案:

答案 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;
}