日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

union

發布時間:2023/12/1 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 union 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關鍵字

1. 共用體聲明和共用體變量定義 共用體(參考“共用體”百科詞條)是一種特殊形式的變量,使用關鍵字union來定義 共用體(有些人也叫"聯合")聲明和共用體變量定義與結構體十分相似。其形式為: union?共用體名{ 數據類型?成員名; 數據類型 成員名; ... }?變量名; 共用體表示幾個變量共用一個內存位置,在不同的時間保存不同的數據類型和不同長度的變量。在union中,所有的共用體成員共用一個空間,并且同一時間只能儲存其中一個成員變量的值。 下例表示聲明一個共用體foo: union foo{ int i; char c; double k; }; 再用已聲明的共用體可定義共用體變量。 例如用上面說明的共用體定義一個名為bar的共用體變量, 可寫成: union foo bar; 在共用體變量bar中,?整型變量i和字符變量c共用同一內存位置。 當一個共用體被聲明時,?編譯程序自動地產生一個變量, 其長度為聯合中最大的變量長度的整數倍。以上例而言,最大長度是double數據類型,所以foo的內存空間就是double型的長度。 union foo { char s[10]; int i; }; 在這個union中,foo的內存空間的長度為12,是int型的3倍,而并不是數組的長度10。若把int改為double,則foo的內存空間為16,是double型的兩倍。 它的內存大小與struct的類似,可以參考一下。 由于union的數據成員共用一個內存空間,所以必須存取正確的成員才能正確的讀取變量值,可以使用一個額外的變數或列舉型態來記錄最后一次使用空間的是哪個成員,例如: #include <iostream> using namespace std; union StateMachine { public: char character; int number; char *str; StateMachine(char c) { character = c; } StateMachine(int n) { number = n; } StateMachine(char* s) { str = s; } }; enum State {character, number, str}; int main() { State state = character; StateMachine machine('J'); ... if(state == character) cout << machine.character << endl; ... return 0; } 另外要注意的是,union的成員不可以為靜態、引用,如果是自訂型態的話,該自訂型態成員不可以有建構函式、解構函式或是復制指定運算子。 2. 共用體和結構體的區別 共用體和結構體有下列區別: 1.?共用體和結構體都是由多個不同的數據類型成員組成, 但在任何同一時刻, 共用體只存放了一個被選中的成員, 而結構體的所有成員都存在。 2. 對于共用體的不同成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對于結構體的不同成員賦值是互不影響的。

轉載于:https://www.cnblogs.com/vanishfan/p/3269882.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的union的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。