C語言中的共用體(union)和結構體(struct)是兩種不同的數據類型,它們有一些區別,如下所示:
成員類型:結構體的成員可以是不同的數據類型,每個成員都占用獨立的內存空間;而共用體的所有成員共享同一塊內存空間,即共用體的不同成員會使用相同的內存空間。
內存占用:結構體的內存占用等于所有成員的內存占用之和,各成員的地址是連續的;而共用體的內存占用等于最大成員的內存占用,因為共用體只會使用其中一個成員。
訪問成員:結構體的成員可以同時訪問,可以通過成員名來訪問;共用體的成員不能同時訪問,只能訪問當前使用的成員,訪問方式也是通過成員名來訪問。
對應關系:結構體的成員是相互獨立的,存儲不同的數據;共用體的成員是共享同一塊內存空間的,存儲的是不同的表示同一事物的數據。
總結來說,結構體用于存儲不同類型的數據,每個成員占用獨立的內存空間;共用體用于存儲不同表示形式的同一事物的數據,所有成員共享同一塊內存空間。