1:共用體(union)類型的定義
為河北等地區用戶提供了全套網頁設計制作服務,及河北網站建設行業解決方案。主營業務為網站設計、成都網站設計、河北網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!union myunion { int a; char b; }; int main(void) { myunion u1; u1.a = 23; printf("u1.b = %d\n", u1.b); //23 printf("&u1.a = %p \n",&(u1.a)); //&u1.a = 0xbfbe5c04 printf("&u1.b = %p \n",&(u1.b)); //&u1.b = 0xbfbe5c04 }
總體上來講共用體和結構體的定義方法很類似,使用方法也基本一樣
2:共用體和結構體的區別
(1)結構體類似于一個包裹,結構體中的成員彼此是獨立存在的,分布在內存的不同單元中,他們只是被打包成一個整體叫做結構體而已;共用體中的各個成員其實是一體的,彼此不獨立,他們使用同一個內存單元。可以理解為:有時候是這個元素,有時候是那個元素。更準確的說法是同一個內存空間有多種解釋方式。也就是說共用體是同一個內存空間,里面存放的數值(二進制)是一樣的,使用u1.a去訪問這個內存時是按int類型去解析這個內存空間,使用u1.b去訪問這個內存時是按char類型去解析這個內存空間。總的來說共用體就是同一塊存放著二進制數的內存空間的不同理解方式。
(2)使用sizeof去測量共用體的大小時,測得的是union中各個元素里面占用內存大的那個元素的大小。因為這樣才能夠存放下所有的元素。
(3)union中的元素不存在內存對齊的問題,因為union中實際只有1個類型的內存空間,都是從同一個地址開始的(開始地址就是整個union占有的內存空間的首地址),所以不涉及內存對齊。
3:共用體的主要用途
(1)共用體就用在那種對同一個內存單元進行多種不同規則解析的這種情況下。
(2)C語言中其實是可以沒有共用體的,用指針和強制類型轉換可以替代共用體完成同樣的功能,但是共用體的方式更簡單、更便捷、更好理解。
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
新聞名稱:C語言之共用體-創新互聯
本文URL:http://vcdvsql.cn/article30/ppipo.html
成都網站建設公司_創新互聯,為您提供電子商務、網站策劃、營銷型網站建設、外貿網站建設、靜態網站、品牌網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯