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 値などに初期化されます。)