匿名聯合 Anonymous unions

2022-08-23 21:27:13 字數 714 閱讀 7401

在 c++ 我們可以選擇使聯合(union)匿名。如果我們將乙個 union 包括在乙個結構(structure)的定義中,並且不賦予它物件(object)名稱 (就是跟在

花括號{}後面的名字),這個union 就是匿名的。這種情況下我們可以直接使用 union 中元素的名字來訪問該元素,而不需要再在前面加 union 物件的名稱。

在下面的例子中,我們可以看到這兩種表達方式在使用上的區別:

union

anonymous union

struct  price;

} book;

struct ;

} book;

以上兩種定義的唯一區別在於左邊的定義中我們給了 union 乙個名字 price ,而在右邊的定義中我們沒給。

在使用時的區別是當我們想訪問乙個物件(object)的元素 dollars 和 yen 時,在前一種定義的情況下,需要使用:

book.price.dollars;

book.price.yen;

而在後面一種定義下,我們直接使用:

book.dollars;

book.yen;

再一次提醒,因為這是乙個聯合(union),域 dollars 和 yen 佔據的是同一塊記憶體空間,所以它們不能被用來儲存兩個不同的值。也就是你可以使用

乙個 dollars 或 yen 的**,但不能同時使用兩者。

匿名聯合體的 妙處

在類內部其實是可以定義一些型別的,比如struct union class,其實也就只有這三類可以被定義,也只有這三類可以定義它們各自的物件,然後 出來或者 出來,c 中只有這三類了。對於它們各自來說,在乙個類的內部都可以有三種方式來定義它們,比如對於union,第一種方式 定義了乙個union型別...

C 語言中的匿名聯合體和匿名結構體

在 c 語言中,可以在結構體中宣告某個聯合體 或結構體 而不用指出它的名字,如此之後就可以像使用結構體成員一樣直接使用其中聯合體 或結構體 的成員。include struct person int main void printf d n jim.area code 如果不使用匿名結構體,則上述例...

例解GNU C之匿名聯合或結構體

分類 漫談c語言 2011 12 04 12 43 488人閱讀收藏 舉報cstruct linux核心 initialization gcc編譯器 前言 計算機語言是編譯器和程式設計師交流的依據和規範,gnu c是gcc特有的功能,在linux核心中被廣泛應用。幫助文件 在gnu c中,可以在結構...