C語言 共用體

2021-09-08 01:14:35 字數 980 閱讀 7189

//

共用體 union

#define _crt_secure_no_warnings#include

#include

#include

//union 共用體,構造資料型別,也叫聯合體,用途:十幾個不同型別的變數共佔一段記憶體(相互覆蓋)

//共用體在型別定義的時候並不分配記憶體,定義共用體變數的時候才分配記憶體

union dataudat1;

union stufisr, *fisr1, fisr2[10];//

共用體定義形式①

//注意:在定義共用體變數的時候初始化也只能初始化第乙個成員變數,無法對其他成員變數初始化

//匿名公共體--匿名共用體無法定義變數,只能在初始化的時候定義變數

//這樣就限定了共用體變數的個數,一般用於給某些特殊許可權的人使用的變數

union lastp;

struct

testes1 = ,tes2;

//共用體變數佔據的記憶體單元的個數應大於或者等於是其內部最大資料成員佔據記憶體單元數。

//結構體,共用體在記憶體中儲存,位元組對齊

//data是共用體,共用體大小必須至少包含最大的成員資料,所以其原始大小是sizeof(int)*10 = 40位元組,

//union ;

//因為data其原始大小正好是最寬基本型別成員int的倍數,不用填充位元組

//所以共用體data的大小是40

//stu是共用體,stu的原始大小是sizeof(char)*10位元組,根據位元組對齊原則,最寬基本型別成員是int,需要填充位元組

//所以共用體stu的大小是12

//總結:共用體大小必須至少包含最大的成員資料,並且可以整除最寬基本型別成員--詳情見結構體

C語言 共用體

共用體 typedef union strudent void fun union 列印 sizeof studend 2,data 0 0xfe,data 1 0xff,列印出0xff,暫時沒有理解 已理解 應該列印出0才對啊!如果jack.number 2 那麼列印 sizeof studend...

C語言共用體

小甲魚共用體 1 用typedef定義型別 用typedef宣告新的型別名來代替已有的型別名 宣告integer為整型 typedef int integer 宣告結構型別 typedef struct date 宣告num為整型陣列型別 typedef int num 100 宣告string為字...

C語言 共用體

共用體是一種特殊的資料型別,允許您在相同的記憶體位置儲存不同的資料型別。您可以定義乙個帶有多成員的共用體,但是任何時候只能有乙個成員帶有值。共用體提供了一種使用相同的記憶體位置的有效方式。為了定義共用體,您必須使用union語句,方式與定義結構類似。union 語句定義了乙個新的資料型別,帶有多個成...