結構體,共用體,列舉體,typedef

2021-07-16 16:23:01 字數 1143 閱讀 4088

概念:結構體時一種構造資料型別

用途:把不同型別的資料組合成乙個整體

記憶體:各成員所佔記憶體空間的累加

一.結構體的宣告與定義變數的方法一共有三種:

1.常規定義:

struct aa

; //注意大括號後面有分號

變數定義:struct 機構體名 結構體變數名錶

如: struct aa aa,bb;(前面的struct不能掉)

成員呼叫:aa.a; aa.b;

2.尾部定義。

struct cc

aa,bb;

此時aa,bb就是已經定義好的cc型別的變數了,這種情況在宣告時struct前就一定不能加typedef,如果加上了,aa,bb就成了和cc一樣的結構體型別了,而不是變數了。

3.無名結構體

struct cc

vip1,vip2;

此種情況除了vip1,vip2,不能再在其他地方定義新的變數,即定義了幾個就只能用幾個。

#include

//直接帶變數名huqinwei

struct stuffhuqinwei;

.com/articles/10417

構造資料型別,也叫聯合體。

用途: 使幾個不同型別的資料共佔一段記憶體(相互覆蓋)

特點:

1共用體變數任何時候只有乙個變數存在。

2,共用體變數定義分配記憶體,長度=最長成員所在位元組數

3,定義共用體變數的方式和結構體一樣有三種:常規,尾部,無名。

4,當給乙個成員重複賦值時或對多個成員賦值時,只承認最後一次的賦值。

功能:用自定義名字為已有資料型別命名(有點偽裝的意思)

範圍:只能針對已有資料型別使用。比如:int ,char, double,…..而define什麼都可以換。

舉例:

typedef int ****;

**** you = 2;

printf(「%d」,you) //2

用途:列舉所有選項

舉例:day = ;

結尾有分號,如果個列舉常量沒有賦值,則預設值為其下標(參考一維陣列),比如此時tuesday = 2

結構體 共用體 列舉

結構體 共用體 列舉 分析 首先宣告的結構體元素year的位址是最低的 0012ff74 而最後宣告的day的位址是最高的 0012ff7c 而我們又知道在棧中宣告變數的時候,位址是從高到低的分配的.因此,切記在結構體中宣告的變數與直接在外面宣告是不一樣的.在結構體中,最先宣告的變數放在最低位的.另...

列舉,結構體,共用體

列舉的定義 enum log level dbg,inf,war,err,fat,all,offvoid writeinfor log level level switch level case dbg printf d n dbg 上述定義的列舉型別,預設為dbg 0,inf 1,依次類推。1 列...

結構體 共用體 列舉

一 結構體 1.結構體和類一樣定義時最後要加分號 2.結構體型別定義變數時struct關鍵字不能省略 3定義好的結構體,系統對之不分配儲存單元 4.c99標準允許對某一成員初始化 5.不能企圖輸出結構體變數名來達到輸出結構體的目的 6.同類結構體間可以相互賦值 二 共用體 1.幾個不同的變數共享同一...