1. ホーム
  2. c

[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?

2022-03-18 20:44:02

質問

に大きな配列があります。 C (ただし C++ ということです。) すべてのメンバーを同じ値で初期化したいのですが。

私はかつてこれを行うための簡単な方法を知っていたことを誓うことができます。私は memset() 私の場合ですが、C言語の構文に組み込まれた方法があるのではないでしょうか?

どのように解決するのですか?

その値が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に初期化することにもなります。 これは 不可 をCで使用します。

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

静的な保存期間を持つオブジェクトは、何もしなければ0に初期化されることを覚えておいてください。 イニシャライザーが指定されている場合。

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

また、quot;0" は必ずしも "all-bits-zero" を意味しないので、上記を使用することができます。 memset() よりも優れており、移植性も高いです。(浮動小数点値は 0に初期化、ポインタはNULL値など)