關於union的那些事兒

2021-09-08 05:40:30 字數 1275 閱讀 3629

自從當年明月的《明朝的那些事兒》爆紅之後,以***那些事兒命名的文章便層出不窮。個人認為,這樣的命名通俗但具有吸引力,容易接地氣。哈哈,所以我也寫了幾篇以《***那些事兒》的文章。當然這篇文章也是為了保持隊形,勿怪,看內容。

union是c++裡面的乙個關鍵字,說出來真的有些不好意思了,從大學學習c++到現在讀研,還真很少用過union。現在在找實習,為了夯實基礎,所以對union做下整理和總結。

union的定義

union的中文名字就是共用體,也叫聯合體,也是使用者的一種自定義型別。在乙個「聯合」內可以定義多種不同的資料型別, 乙個被說明為該「聯合」型別的變數中,允許裝入該「聯合」所定義的任何一種資料,這些資料共享同一段記憶體,已達到節省空間的目的。

union也有自己的訪問許可權,預設是公有的,並且也有成員函式。

union personalinfo

personalinfo(

int a)

char name[10

];

intage;

};personalinfo perinfo(

5);

union和struct的區別在結構體中各成員都有自己的記憶體空間,在聯合體中,各成員共享一段記憶體(記憶體大小為其中最大的資料成員所佔的記憶體)。

union number

half;

}num;

num.i = 0x4241; /*

聯合成員賦值

*/printf(

"%c%c\n

", num.half.first, num.half.second);

num.half.first = '

a'; /*

聯合中結構成員賦值

*/num.half.second = 'b'

; printf(

"%x\n

", num.i);

輸出顯示:

使用union需要注意的問題

聯合體中不能有靜態成員、引用型別的成員,因為不能共享記憶體。

聯合裡不允許存放帶有建構函式、析夠函式、複製拷貝操作符等的類,因為他們共享記憶體,編譯器無法保證這些物件不被破壞,也無法保證離開時呼叫析夠函式。

使用聯合可以節省記憶體空間,但是也有一定的風險:通過乙個不適當的資料成員獲取當前物件的值。

關於Python那些事兒

1.易於學習 python有相對較少的關鍵字,結構簡單,和乙個明確定義的語法,學習起來更加簡單。2.易於閱讀 python 定義的更清晰。3.易於維護 python的成功在於它的源 是相當容易維護的。4.乙個廣泛的標準庫 python的最大的優勢之一是豐富的庫,跨平台的,在unix,windows和...

關於Nginx那些事兒

記憶體少 併發能力強,效能優化 正向 在瀏覽器中配置 伺服器,實現客戶端對伺服器的訪問。也就是說,在一般情況下,我們客戶端無法直接訪問到伺服器,需要有那麼乙個中臺作為中間應用實現訪問。反向 反向 中,客戶端是無知的,不知道是否配置了伺服器,我們將資料發到反向 伺服器上去,反向 伺服器選擇目標伺服器獲...

關於BOM的那些事兒

window物件 1.window物件是最頂層的物件 2.window物件有六大屬性,這六大屬性本身也是物件 3.window物件旗下的document也是物件 並且document旗下有五大屬性 4.document旗下的五大屬性又是物件,總結 都是物件 window screenleft 和 s...