1. ホーム
  2. c

[解決済み】C言語で配列を0に初期化する方法は?

2022-04-06 10:28:06

質問

C言語で大きなNULL配列をグローバルで使いたいのですが、どうすればいいですか?これを行うには、以下のように入力する以外に方法はありますか?

char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };

?

解決方法は?

グローバル変数とスタティック変数は、自動的にゼロに初期化されます。もし、単純に

char ZEROARRAY[1024];

をグローバルスコープで実行すると、実行時にはすべてゼロになります。しかし、実際には は、ローカル配列の場合の省略構文です。配列が部分的に初期化されている場合、初期化されていない要素は適切な型の値0を受け取ります。と書くことができます。

char ZEROARRAY[1024] = {0};

コンパイラは、書き込まれていない項目をゼロで埋めるでしょう。別の方法として memset を使用して、プログラム起動時に配列を初期化します。

memset(ZEROARRAY, 0, 1024);

それは、変更した後にリセットしてすべてゼロに戻したい場合に便利です。