結構體,列舉,聯合

2021-08-11 04:42:10 字數 1566 閱讀 6889

結構體

1. 結構體的建立

(1)在構建結構體之前,必須要對結構體進行宣告。

例:struct student      //描述乙個學生,student為標籤

;  //此處的分號不能丟,此處也可寫變數

(2)成員訪問

2.1在(

1)中的

struct student{}

;相當於型別,比如

int型,

struct student   s  ;//s為變數

s中有name,age,***,

三個成員;

在訪問成員是為(s.成員)的形式:例:

s.age:

訪問的是

age成員

2.2而如果需要訪問指標指向的結構體變數時,應該解引用指標,這樣就會獲得指標指向的內容。

例:p為指向結構體變數的指標

struct student *p=s;

(*p).name   (p->name)

//訪問成員,兩種形式都可以

(3)初始化

例:(1)struct student n1=;//

先宣告了結構體,然後賦值

(2)struct studentn2=;//在宣告時就定義變數然後初始化。

2. 結構體的記憶體對齊

在結構體中宣告成員時,成員在記憶體中存放時要遵循記憶體對齊的原則:平台原因和效能原因。

(1)struct s1 ;

(2)struct s2;

總結:(1)對齊數:編譯器預設的和該成員大小的較小值

visual環境為8,

linux為4

。 (2)總大小為成員中最大對齊數的整數倍。

(3)除了第乙個,後乙個成員之前的都為自己對齊數的整數倍。

(4)結構體的對齊數為成員中的最大對齊數。

3.結構體傳參

struct student s;

int main()

;          

8個位元組,兩個整型

注意:成員必須是int ,unsigned int 和

signed int

,char

整型族

2.位段也需要注意記憶體對齊

struct s

char a : 3;//3個位元位

char b : 4;//4個位元位,共7個,佔乙個位元組

char c : 5;//5個位元位,乙個位元組

char d : 4;//4個位元位,乙個位元組

int e : 4;//前邊共三個,補充乙個,加上4,一共8個

列舉enum day//列舉型別

mon=1,

tue=2,

wed=3,

sun=7,

}c1;

enum day c1=sun;//只能拿列舉常量賦值

不可以直接賦值

:c1=7;

聯合(共用體)

聯合體的特點:至少要儲存最大的成員

union un

short c[7];//大小為7,對齊到4 的整數倍12 處

int i;//加上4,為16

結構體 聯合 列舉

一般的,在宣告乙個結構提示要使用struct關鍵字,例如 建立乙個學生 struct stu char name 20 名字 int age 年齡 char 5 性別 char id 20 學號 分號不能丟結構體得特殊宣告 沒有結構體名 structx 沒有結構體的標籤,就不能在結構體建立完成之後再...

結構體,列舉,聯合。

今天我們來學習一下結構體,列舉以及聯合等知識。一。首先從結構體開始,結構體與陣列一樣都是聚合型別。1.結構體的宣告 struct tag variable list tag 1 可以省略 2 見名思意 3 盡量不省略。member list 不能為空。variable list 可以省略。例如 描述...

結構體列舉與聯合

基本介紹 struct是結構體的關鍵字,它將一些相關聯的資料打包成乙個整體,這些相關聯的資料可以是不同的型別。它們被稱為結構體的成員,結構體的成員可以是標量 陣列 指標 或者是其他結構體。結構的宣告 假設我們要建立學生檔案,要納入學生的姓名,年齡和性別三個內容。那麼我們可以通過建立乙個結構體來實現這...