久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 學習資源 > 講師博文 > struct和union的區別

struct和union的區別 時間:2023-09-07      來源:華清遠見

首先我們要了解兩者分別是什么?

1. 結構體(struct)

 在C語言中,結構體是一種可自定義的數據類型,可以用于聲明變量、指針或數組。結構體的特點在于其是一些元素的集合,這些元素可以是變量,可以是數組,可以是指針,它們完全由程序員指定,這些元素被稱為結構體的成員。

例如:創建一個學生信息(Stu_Info)的結構體,成員:名字(Name)、年齡(Age)、性別(Sex)、成績(Score)。則結構體的一般定義如下:

使用結構體(Stu_Info)定義結構體變量(stu)并使用,示例如下:

2. 共用體(union)

 在C語言中,共用體也稱為聯合體,也是一種自定義的數據類型。其特點是可以有多個成員(成員的類型是由程序員指定的),但是在任何時候都只能有一個成員有值。其提供了一種使用相同的內存位置的有效方式。

共用體的使用在代碼書寫上和結構體很相似:

 由這個示例可驗證共用體Uni的成員a、b是共用存儲空間的,我們可以采用這種方式獲取計算機的存儲方式(大小端序)。

區別

二者的區別是什么呢?答:內存占用。

 結構體作為成員的集合,其各自成員擁有自己的內存,互不影響。并且結構體變量的長度計算規則:在遵循內存對齊原則,為所以成員長度之和。

 共用體的成員共用存儲空間,成員的使用上是互斥的。共用體變量的長度計算規則:足夠容納最寬的成員,并且能被所有成員數據類型的長度的整數倍。

對64位機下結構體和共用體計算長度,示例如下:


 對Str結構體,最大的數據類型為double,在64位機占8個字節,按照8字節對齊。成員a長度8+1,多出的部分與成員b組成8個字節,成員c占8個字節,所以總共24字節。

 對Uni共用體,最寬成員為a,9個字節,所以至少大于9。最大數據類型double,所以為8字節的整數倍,計算結果16字節。

上一篇:嵌入式方向簡述:Linux多任務操作系統中任務、進程和線程的意思

下一篇:ARM的入門學習方法分享

戳我查看嵌入式每月就業風云榜

點我了解華清遠見高校學霸學習秘籍

猜你關心企業是如何評價華清學員的

干貨分享
相關新聞
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2024 北京華清遠見科技發展有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部