結構體小結

2021-09-02 00:04:08 字數 1626 閱讀 1272

11.26

1.struct 結構體名 結構體成員

;最後的「;」不能省!

也可指定乙個無名的結構體型別,他不出現結構體名。

2.結構體變數的初始化和引用。

struct 結構體名 結構體成員

成員=:

也可成員.成員列表= ;

*3.*只能對最低一級的成員進行賦值運算。

struct studentstu;

struct birthday

bir;

stu.bir.year= ;

*4.*結構體變數可以像普通變數一樣進行各種運算。

11.27

1.結構體陣列

struct 結構體名

陣列名[陣列長度] ;

如果先定義了乙個結構體,這可以直接這樣:

結構體型別 陣列名[陣列長度] ;

使用時和普通陣列區別不大;

2.結構體指標:

struct 結構體名 *p;

p代表了第乙個元素;

可通過指標來指向結構體成員。如:

(*p).成員名;

p->成員名;

指向結構體陣列的指標:

結構體陣列的指標的初值為第乙個元素的第乙個成員的位址。

3.可用結構體變數和結構體指標變數作為函式引數。

如:#include#includestruct student ; //void print(struct student); void print(strut student *p); int main() void print(struct student *p) //void print(struct student stu) }

11.29

鍊錶:先定義乙個結構體,結構體中必須有乙個結構體變數的指標。這個結構體變數的指標指向下乙個結構體。

建立動態鍊錶的ns圖

輸出動態鍊錶的ns圖

11.30

共用體型別:

union 共用體名

變數列表;

當想根據不同情況,在同乙個起始位址位置輸入不同的資料型別時,

可以用共用體變數來實現。

共用體變數不能被使用,只能呼叫共用體變數的成員。

共用體的使用:

struct 結構體名

變數列表;

}變數列表;

注意:(1)。同乙個記憶體段可以用來存放幾種不同型別的成員,但每一瞬時只能存放其中乙個成員。

(2)。共用體中起作用的成員是最後一次被賦值的成員。

列舉型別:

enum[列舉型別] ;

列舉元素按常量處理,故稱列舉常量。

用 typedef 宣告新型別名。

如: typedef int integer

integer 就代表了int

於是 int a也就相當於 integer a

也可以用typedef struct date;

於是可以這樣定義結構體指標:

date *a

結構體與共用體小結

一,結構體的概念和定義 1,結構體的定義 struct 結構體名 這裡資料型別可以是復合型別,例如又是乙個結構體型別,即巢狀 2,結構體變數的定義 struct 結構體名 變數名1,變數名2,變數名n 或 struct 結構體名 結構體變數1,結構體變數2 或 struct 結構體變數1,結構體變數...

結構體的大小 結構體對齊問題

c語言中,基本資料型別與作業系統有關 雖然直接與編譯器相關 基本沒有什麼變化。比如在32位作業系統中,int佔4個位元組,long佔4個位元組,char佔1個位元組,double佔8個位元組。但是結構體的大小並不只與作業系統有關了,與編譯器有比較大的關係。不同的編譯器有不同的對齊方式,下面以32為l...

結構體位元組對齊小結

1.位元組對齊的原因 一些平台對某些特定型別的資料,只能從特定位址開始訪問。如有些訪問是從偶位址開始,假設int 32位 的資料存在偶位址開始,則只需要乙個週期就能拿到。但如果在奇位址開始,則除了要用2個週期讀取外,還要對高低位址進行拼湊才能得到正確的資料。顯然這是低效的。2.一般編譯器在編譯程式時...