共用方式為


等位宣告

「 聯集的宣告 」 會指定一組的變數值,並選擇性地標記命名聯集。 變數的值則稱為 「 成員 」 的聯集,並可以具有不同的型別。 等位會類似於在其他語言的 「 變異記錄 」。

語法

  • 結構或位等位的規範
    結構或等位的識別項選擇**{** 結構宣告清單**}**

    結構或等位的識別項

  • 結構或等位
    struct

    union

  • 結構宣告清單
    結構宣告

    結構宣告清單結構宣告

聯集的內容會定義為

  • 結構宣告
    規範式的辨識符號清單結構宣告子清單**;**

  • 規範式的辨識符號清單
    型別規範規範限定元清單opt

    型別限定詞規範限定元清單opt

  • 結構宣告子清單
    結構宣告子

    結構宣告子清單**,** 結構宣告子

變數與等位型別會儲存該型別所定義之值的其中一個。 相同的規則會控制結構和等位宣告。 也有的等位元欄位。

等位的成員不能有不完整的型別,輸入void,或函式型別。 因此成員不能成為其實例的聯集,但可以是指標被宣告的等位型別。

聯集的型別宣告是只有一個範本。 變數宣告之前,未保留的記憶體。

注意事項注意事項

如果兩個型別的等位宣告,並儲存一個值,但聯集與另一個型別存取,則結果會是不可靠。比方說,葛浮點數和int宣告。A 浮點數值會儲存,但程式稍後存取的值為int。在這種情況下,值而定的內部儲存體浮點數的值。將不可信賴的整數值。

範例

聯集的範例如下:

union sign   /* A definition and a declaration */
{
    int svar;
    unsigned uvar;
} number;

這個範例會定義的等位變數sign輸入,並宣告變數,名為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陣列包含 2000 項目。 陣列中的每個元素是個別的聯集含有兩個成員: window1和screenval。 window1成員是一種結構含有兩個的位元欄位成員, icon和color。 The screenval member is an int. 在任何時候,每個等位的項目會保留其中一個int由screenval或由結構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 特定

請參閱

概念

多個宣告和區域變數宣告