0

我有这个函数旨在将多维 2d (6x6) 数组初始化为零。我使用 cout 调用 main 中的函数来测试它并输出垃圾。请帮忙。谢谢!

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;
}
4

2 回答 2

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以类似的方式使用。)

于 2013-07-18T23:25:01.763 回答
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;
}
于 2013-07-18T23:24:39.080 回答