2

これが私のコードの一部です。arraylist[0]asarraylist[0].x = 0と。だけを初期化したいのですがarraylist[0].y = 0。残りの構造体配列を初期化する必要はありません。どうすればいいですか?ありがとうございました。

#include <stdio.h>
struct example {
    int x;
    int y;
};
struct example arraylist[40];

int main(int argc, char *argv[]){
    printf("%d\n %d\n", arraylist[0].x, arraylist[0].y);
    return 0;
}
4

4 に答える 4

5

構造体配列の特定の要素を初期化できます。

例えば:

struct example arraylist[40] = { [0]={0,0}}; //sets 0th element of struct

struct example arraylist[40] = { [5]={0,0}}; //sets 6th element of struct

これは指定イニシャライザーと呼ばれ、C99がそれを適応させる前はGNU拡張であり、C99以降は標準Cでもサポートされています。

于 2012-05-19T12:56:17.043 に答える
2

ファイルスコープ内の変数について話しているので、ここでは何もする0必要はありません。明示的な初期化子を指定しない場合、そのような変数は常にによって初期化されるためです。

于 2012-05-19T12:55:36.320 に答える
1

Cでは、構造体/配列の一部を初期化したら、残りの部分を0で初期化します。

そもそも初期化されていない変数にアクセスしてはならず、それらの値は定義されていないため、問題はありません。

于 2012-05-19T12:52:41.320 に答える
1

Cでは、明示的に初期化されない限り、すべての静的変数と外部変数は0に初期化されます。

于 2012-05-19T12:55:17.193 に答える