從零開始一起學C語言(六) 結構體

2021-09-12 15:59:41 字數 1774 閱讀 6096

目錄

一、結構體的引入

二、結構體的定義以及初始化

1、結構體的定義

2、結構體變數的初始化。

三、結構體內元素的訪問

1、用結構體變數名

2、用結構體指標

四、結構體型別的大小

五、共用體

1、共用體的定義

2、共用體常用舉例

六、公用體的大小

七、列舉

現實生活中有很多變數需要描述,例如乙個人的資訊

姓名:char name[20];

性別:char ***;

年齡:int age;

當需要描述很多人的資訊的時候,就顯得非常麻煩。這樣c語言就引入了結構體的概念。

結構體是不同資料型別變數的集合。

三種方法:

1)

struct tag

;  //定義結構體型別

struct tag people; //定義結構體變數

先定義結構體型別,再用型別定義變數。最常用的方法。

2)struct tag

people;

struct tag people2;

//定義型別的同時定義乙個變數,還可以用來定義其他變數。

3)struct

people;

這種方法只能在定義型別的時候定義變數。

用大括號,給對應的元素賦值。

struct tag

people = ;

struct tag people2 = ;

結構體變數名.元素

指標變數名->元素

兩種方法訪問到的結果是一樣的。

#include struct tag

people = ;

struct tag people2 = ;

int main()

,,};

int i;

p = &people2;

printf("姓名:%-10s性別:%-5c年齡:%-5d\n",people.name,people.***,people.age);

printf("姓名:%-10s性別:%-5c年齡:%-5d\n",p->name,p->***,p->age);

for(i=0;i<3;i++)

printf("姓名:%-10s性別:%-5c年齡:%-5d\n",student[i].name,student[i].***,student[i].age);

return 0;

}

1、每次開闢記憶體的大小都為最大的資料型別大小。

2、從上往下儲存。

struct tag

;

擁有1、2時大小為 8

擁有 2、3時大小為 12

擁有1 、2 、3時大小為 16

可以理解為一種特殊的結構體,裡面同樣可以儲存不同的資料型別,但是不同的資料型別占用同一記憶體空間。

常用的定義格式:

union 共用體名

;union 共用體名 共用體變數名;

把乙個整形資料拆分為4個字元型資料。

#include union tag

;int main()

1、大小為最大資料型別的整數倍。

2、能儲存最大的變數。

把變數可能出現的值一一枚舉出來,相當於乙個常量的集合。

格式:enum 列舉名;

從零開始一起學C語言(九) 資料結構

目錄 一 資料結構的介紹 1 資料結構 2 資料結構的儲存方式 二 記憶體的動態開闢和釋放 1 記憶體的動態開闢 2 記憶體的動態釋放 三 鍊錶的建立 1 煉表頭的建立 四 鍊錶的讀和寫 1 建立任意數量的節點 2 鍊錶的寫 3 鍊錶的讀 五 鍊錶的插入 1 頭插法 2 尾插法 六 鍊錶的刪除 相互...

從零開始一起學stm32(六) RTC

定時器 時間基準 計數器 時鐘日曆 2016 7 14 14 40 30 後備區作用 在系統復位或從待機模式喚醒後,rtc的設定和時間維持不變。完整步驟 設定暫存器rcc apb1enr的pwren和bkpen位,使能電源和後備介面時鐘 設定暫存器pwr cr的dbp位,使能對後備暫存器和rtc的訪...

從零開始一起學C語言(八) 編譯預處理

目錄 一 編譯預處理 1 作用 2 包含標頭檔案 3 巨集定義 4 條件編譯 二 位運算 1 位運算子 2 寫1和寫0 三 32個關鍵字 四 模組化程式設計 以 開頭的命令,為編譯做準備工作,篩選出需要編譯的 include 從系統指定的目錄尋找指定的stdio.件。include stdio.h ...