0

aサイズ 0の配列を宣言してみました:

int a[0]; 

私の VC++ 6 コンパイラは、サイズがゼロの配列を作成できないというエラーをスローします。

構造内で宣言するのと同じことを試みても、エラーは発生しません。

struct st
{
    int a[0];
}

コードはエラーなしでコンパイルおよびリンクされます。上記の 2 つのケースでコンパイラがどのように反応するかを理解してくれる人がいますか? ありがとう。

4

2 に答える 2

4

構造体は特殊なケースです。空の配列を構造体の最後のメンバーとして宣言するのは一般的なパターンです。構造体は実際には可変長のメモリのより大きなブロックの一部です。詳細については、構造体の空の配列を参照してください。

于 2013-04-19T13:34:46.303 に答える