配列のすべてのメンバーを同じ値に初期化するにはどうすればいいですか? 質問する

配列のすべてのメンバーを同じ値に初期化するにはどうすればいいですか? 質問する

Cで大きな配列があります(違いがあるかどうかはC++でなくてもかまいません)。すべてのメンバーを同じ値で初期化したいと思います。

以前はこれを行う簡単な方法を知っていたと断言できます。memset()私の場合はそれを使用できましたが、C 構文に組み込まれた方法はないのでしょうか?

ベストアンサー1

その値が 0 でない限り (その場合は初期化子の一部を省略でき、対応する要素は 0 に初期化されます)、簡単な方法はありません。

ただし、明らかな解決策を見逃さないでください。

int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };

値が欠落している要素は 0 に初期化されます。

int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...

したがって、すべての要素が 0 に初期化されます。

int myArray[10] = { 0 }; // all elements 0

C++では、空の初期化リストはすべての要素を0に初期化します。これは禁じられているC23までCの場合:

int myArray[10] = {}; // all elements 0 in C++ and C23

初期化子が指定されていない場合、静的ストレージ期間を持つオブジェクトは 0 に初期化されることに注意してください。

static int myArray[10]; // all elements 0

また、その「0」は必ずしも「すべてのビットがゼロ」を意味するわけではないので、上記の方法を使用する方が memset() よりも優れており、移植性も高くなります。(浮動小数点値は +0 に初期化され、ポインターは null 値などに初期化されます。)

おすすめ記事