c primer plus復合型別之共用體

2021-07-30 12:50:36 字數 582 閱讀 3519

共用體(union)是一種資料格式,它能夠儲存不同的資料型別,但只能儲存其中的一種型別。也就是說,結構可以同時儲存int,long和double,而共用體只能儲存int,long或double。共用體與結構體形式相同,但含義不同。例如,

1:共用體的宣告

union one4all

;

可以使用one4all型別的變數來儲存int,long或double,條件是在不同的時間進行,例如:

one4all pail;

pail.int_val=15;

cout<

2:匿名共用體

匿名共用體沒有名稱,其成員將成為位於相同位址處的變數。顯然,每次只有乙個成員是當前成員。例如,

struct widge;};

...widge pirze;

...if(prize.type==1)

else

由於共用體是匿名的,因此long_val和char_val被視為prize的兩個成員變數,他們的位址相同,由程式設計師決定當前哪個成員是活動的。

3:共用體常用於節省記憶體。

《C Primer Plus》 復合型別

typename arrayname arraysize 要求arraysize在編譯是已知,不能是變數。陣列作為由基本型別組成的復合資料型別,arrayname要強調是對應基本資料型別組成的陣列 特定陣列 通過下標或索引單獨訪問各個元素 可能引發陣列越界的問題,int a 20 容易錯誤訪問a 2...

c primer plus復合型別之指標

指標是乙個變數,其儲存的是值的位址,而不是值本身。了解 在討論指標之前,我們先看一看如何找到常規變數的位址,只需對變數應用位址運算子 就可以獲得他的位置,例如 int cups 6 double donuts 4.5 cout cups value 程式輸出 cups value 6 and cup...

c primer plus 復合型別之陣列

編譯器會把陣列名轉換為乙個指標常量,是陣列中的第乙個元素的位址,型別就是陣列元素的位址型別,如 int a 10 陣列名a若出現在表示式中,如int p a 那麼它就轉換為第乙個元素的位址,等價於int p a 0 只有兩種情況下例外 第一種是對陣列名使用sizeof運算子 sizeof a 這將會...