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 に答える