この記事では、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
関数を使って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
関数の第一引数には初期化する対象の配列を指定し、第二引数には初期化する値を指定します。
ここでは0を指定しているため、配列の要素は全て0で初期化されます。
第三引数には初期化する対象の配列のサイズをバイト単位で指定します。
sizeof(array)
とすることで、配列のサイズを取得しています。
上記のコードを実行すると、以下のような出力結果が得られます。
0 0 0 0
0 0 0 0
0 0 0 0
memset
関数を使うことで、簡単に2次元配列の要素を全て0で初期化することができます。
ただし、memset
関数はバイト単位での初期化を行うため、要素が構造体だった場合などの複数バイトを占める場合は注意が必要です。