【C言語】 2次元配列の要素を全て0で初期化する方法を解説

この記事では、C言語で2次元配列の要素を全て0で初期化する方法について解説します。

初心者の方でも簡単に理解できるように、{0}を使う方法、for文を使う方法、そしてmemset関数を使う方法について説明します。

目次から探す

2次元配列の要素を全て0で初期化する方法

{0}を使う方法

C言語では、配列を宣言する際に、要素を初期化することができます。

2次元配列の要素を全て0で初期化する場合、以下のように{0}を使用します。


#include <stdio.h>
int main() {
    int array[3][3] = {0};
    // 2次元配列の要素を表示する
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }
    return 0;
}

上記のコードでは、3行3列の2次元配列を宣言し、要素を全て0で初期化しています。

その後、2重のforループを使用して、配列の要素を表示しています。

実行結果は以下の通りです。

0 0 0
0 0 0
0 0 0

for文を使う方法

もう一つの方法は、for文を使用して2次元配列の要素を0で初期化する方法です。

以下のコードを参考にしてください。


#include <stdio.h>
int main() {
    int array[3][3];
    // 2次元配列の要素を0で初期化する
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            array[i][j] = 0;
        }
    }
    // 2次元配列の要素を表示する
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }
    return 0;
}

上記のコードでは、まず2次元配列を宣言します。

その後、2重のforループを使用して、配列の要素を0で初期化しています。

最後に、2重のforループを使用して、配列の要素を表示しています。

実行結果は以下の通りです。

0 0 0
0 0 0
0 0 0

いずれの方法でも、2次元配列の要素を全て0で初期化することができます。

初期化が必要な場合は、適切な方法を選択してください。

2次元配列の要素を全て0で初期化する方法の一つとして、memset関数を使う方法があります。

memset関数は、指定したメモリ領域に指定した値をセットするための関数です。

memset関数を使用するためには、string.hヘッダーファイルをインクルードする必要があります。

以下に、memset関数を使って2次元配列の要素を全て0で初期化するサンプルコードを示します。


#include <stdio.h>
#include <string.h>
#define ROW 3
#define COLUMN 4
int main() {
    int array[ROW][COLUMN];
    memset(array, 0, sizeof(array));
    // 2次元配列の要素を表示する
    for (int i = 0; i < ROW; i++) {
        for (int j = 0; j < COLUMN; j++) {
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }
    return 0;
}

上記のコードでは、 memset(array, 0, sizeof(array)) という行で、arrayという2次元配列の要素を全て0で初期化しています。

memset関数の第1引数には初期化する対象の配列を指定し、第2引数には初期化する値を指定します。

ここでは0を指定しているため、配列の要素は全て0で初期化されます。

第3引数には初期化する対象の配列のサイズをバイト単位で指定します。

sizeof(array) とすることで、配列のサイズを取得しています。

上記のコードを実行すると、以下のような出力結果が得られます。

0 0 0 0
0 0 0 0
0 0 0 0

memset関数を使うことで、簡単に2次元配列の要素を全て0で初期化することができます。

ただし、memset関数はバイト単位での初期化を行うため、要素が構造体だった場合などの複数バイトを占める場合は注意が必要です。

目次から探す