5

このように定義された構造体があります。

typedef struct COUNTRY {
    char Code[3];
    char Country[30];
    int Population;
    float Expectancy;
    struct Country *Pointer;
} COUNTRY;

次のように割り当てられた構造体の配列を見てきました。

COUNTRY *countries = calloc(128, sizeof(COUNTRY));

または多分このように:

COUNTRY *countries = malloc(128 * sizeof(COUNTRY));

しかし、これは何をしますか:

COUNTRY countries[128] = {};

どのような場合でも、各エントリのフィールドに書き込むことができるからです。3 番目のオプションは単にフォームが悪いだけですか? その行を main() の外側の残りの変数宣言と一緒に配置できるので、私には良いようです。それ以外の場合は、main() またはその他の関数内でのみ loc() または malloc() を呼び出すことができます。

私は何か間違ったことをしていますか?

4

5 に答える 5

0

= {};

は GNU C 拡張であり、次と同じです。

= {0};

于 2013-09-19T18:11:56.297 に答える