1. ホーム
  2. c

[解決済み] C言語で2次元配列をゼロ点化する最速の方法とは?

2022-12-22 04:59:50

質問

C言語で大きな2次元配列を繰り返しゼロにしたいのですが、今のところこのような感じです。

// Array of size n * m, where n may not equal m
for(j = 0; j < n; j++)
{
    for(i = 0; i < m; i++)
    {  
        array[i][j] = 0;
    }
}

memsetを使ってみました。

memset(array, 0, sizeof(array))

しかし、これは1次元配列にしか使えません。2次元配列の内容をprintfすると、最初の行は0になりますが、その後ランダムに大きな数字がロードされてクラッシュしてしまいます。

どのように解決するのですか?

memset(array, 0, sizeof(array[0][0]) * m * n);

ここで mn は2次元配列の幅と高さです(あなたの例では、正方形の2次元配列なので m == n ).