1

次のコードがあります。

typedef struct
{
   int a;
   float b;
   int c;
} Hello;

Hello hello[100];

この配列の最初の要素に値を代入できることはわかっています。

hello[0] = {1,2.0,3};

しかし、宣言時に最初の要素を割り当てる方法hello: Hello hello[100];

4

3 に答える 3

5

次のスニペットを使用します。

Hello hello[100] = {{1, 2.0, 3}};

外側の中かっこは配列を初期化しますが、これらの中かっこには要素 (最初の配列要素) しかありません。その結果、hello[0] を外側の中かっこ内の値で初期化します。

于 2013-06-24T16:03:01.510 に答える
1

コンパイラがc99機能をサポートしている場合、 Designated Initializersを使用して配列の任意の要素を初期化できます。

Hello hello[100] = {[0] = {1,2.0,3}}, [98] = {2,3.5,4} };  

これにより、 0 番目の要素が に{1,2.0,3}98 番目の要素{2,3.5,4}が に初期化されます。その他は{0,0.0,0}それ自体に初期化されます。この方法のもう 1 つの利点は、要素がリストされる順序が重要でなくなることです。つまり、上記の配列を次のように初期化できます。

Hello hello[100] = {[98] = {2,3.5,4}, [0] = {1,2.0,3} };
于 2013-06-24T20:32:49.570 に答える