共有体の宣言
「宣言」共用体は一連の変数の値とオプションで共用体を指定するタグを指定します。変数の値や共用体 「メンバー」とも呼ばれ異なる型を指定できます。共用体は他の言語の異なるレコード 「」に似ています。
構文
構造体または共用体指定子 :
構造体または共用体の識別子 opt**{** 構造体宣言リスト }構造体または共用体の識別子
構造体または共用体 :
structunion
構造体宣言リスト :
構造体宣言構造体宣言リスト構造体宣言
共用体の内容は次のように定義されます。
構造体宣言 :
修飾子指定子リスト構造体宣言リスト ;指定子 : リスト修飾子
型指定子が指定子リスト修飾子 opt型修飾子を指定子リスト修飾子 opt
構造体宣言リスト :
構造体宣言構造体宣言リスト の 構造体宣言
共用体 の型の変数はその型で定義されている値から 1 を格納します。同じ規則が構造体や共用体の宣言よりも優先されます。共用体ではビット フィールドを持つことができます。
共用体のメンバーは不完全な型型 voidまたは関数型を指定できません。このメンバーは共用体のインスタンスではありませんが宣言された共用体型へのポインターです。
共用体型宣言はテンプレートだけです。メモリは変数が宣言されるまで予約ではありません。
[!メモ]
値 1 が宣言され共用体の他の種類とともに保存されますが 2 種類の共用体にアクセスした場合結果は信頼できない場合があります。たとえば フローティング と int の共用体で宣言されています。 フローティング の値はに格納されますがプログラムは後で int として値にアクセスします。このような場合値は フローティング の値の内部ストレージによって異なります。整数値は信頼できません。
例
次に共用体のケースです :
union sign /* A definition and a declaration */
{
int svar;
unsigned uvar;
} number;
この例では sign の型が共用体変数を定義し2 個のメンバーがある number という名前の変数を宣言しています : svar符号付き整数および uvar の符号なし整数。この宣言は number の現在の値が符号付きまたは符号なしの値として保存します。この共用体型に関連付けられているタグは sign です。
union /* Defines a two-dimensional */
{ /* array named screen */
struct
{
unsigned int icon : 8;
unsigned color : 4;
} window1;
int screenval;
} screen[25][80];
screen の配列は2,000 の要素が含まれます。配列の各要素には2 人のメンバーを使用して個別の共用体です : window1 と screenval。window1 のメンバーは 2 ビット フィールド メンバーおよび iconcolor 構造です。screenval のメンバーは int です。常に共用体の各要素は intscreenval によって表されるか window1 によって表される構造体を保持します。
Microsoft 固有の仕様 →
入れ子になった共用体は他の構造体または共用体のメンバーと匿名で宣言できます。これは名前が共用体のケースです :
struct str
{
int a, b;
union / * Unnamed union */
{
char c[4];
long l;
float f;
};
char c_array[10];
} my_str;
.
.
.
my_str.l == 0L; /* A reference to a field in the my_str union */
共用体は共用体の特定の時点に含まれるデータの種類を指定するフィールドを含む構造体の中に入れ子になっています。これはこのような共用体の宣言の例です:
struct x
{
int type_tag;
union
{
int x;
float y;
}
}
共用体の参照については構造体とクラス を参照してください。
終了 Microsoft 固有の仕様→