web-dev-qa-db-ja.com

構造体の配列の値を初期化する

私はその中にいくつかの配列を持つ構造体を持っています。配列の型はunsigned char [4]です。

呼び出すことで各要素を初期化できます

struct->array1[0] = (unsigned char) something;
... 
struct->array1[3] = (unsigned char) something;

1行で4つすべての値を初期化する方法があるかどうか疑問に思っています。

解決策:すべての値を初期化して一時配列を作成し、memset()を呼び出して値を構造体配列にコピーする必要がありました。

12
Nick Schudlo

あなたもループすることができます:

  for(i = 0; i < 4; i++) the_struct->array1[i] = (unsigned char) something;

これは、charではなくても機能します。 int(および値!= 0)。実際、たとえば1にmemsettingすることで、intで構成された構造体(sizeof intが1より大きい場合)は、それらを初期化する正しい方法ではありません。

1
ShinTakezou