0

同じデフォルト値で構造体の配列を初期化する必要があります。これは非常に大きな配列であるため、初期化子で各要素を手動で設定することはできません。次のコードはこれを行うための正しくて健全な方法ですか、それとも初期化関数と for ループにフォールバックする必要がありますか?

#define SIZE_OF_S1_ARR 10000 //just some arbitrary size for an example

typedef struct { char* id, char* description} S1;

/*
 * Array of structs, with each element having an id and a description 
 * which is an empty c-string
/*/
S1 s1_arr[SIZE_OF_S1_ARR] = {{ "", "" }};

この配列は、単一の文字として ID のみを含む char 配列として既に存在していたことを付け加えておきます。より便利な構造体に置き換えています。

4

3 に答える 3

1

標準 C では、各値を個別に指定しない限り、0 以外の配列の初期化はありません。

ただし、GNU C コンパイラを使用する場合は、次のようなものを使用できます。

char s1_arr[SIZE_OF_S1_ARR] = {[0 ... SIZE_OF_S1_ARR-1] = '_' };

このアプローチは移植性がないことに注意してください。さらに、同じ値を持つように文字列(つまり、char へのポインター) を初期化する方法は 2 つあります。

于 2014-06-09T14:38:27.883 に答える
-1

memset関数を探しているようです。

于 2013-05-23T15:47:02.097 に答える