結構體和共用體學習筆記

2021-10-12 17:43:53 字數 1822 閱讀 9542

為什麼需要結構體

傳統解決辦法

陣列是相同型別資料的集合。

結構體可以存放不同型別的資料。

結構體和結構體變數的區別和聯絡

1)結構體是自定義的資料型別,表示的是一種資料型別,

2)結構體變數是乙個具體變數

int num1l//int為資料型別,而num1是具體的int變數
3)結構體變數在同一記憶體區域

結構體變數需要給成員賦值,如果沒有賦值就使用可能導致程式異常終止。

成員是結構體的乙個組成部分,一般為基本資料型別,也可以是陣列,指標,***結構體***等。

乙個結構體變數成員的更改不影響其他成員。

賦值方式

具體例子

三種定義方式

1)乙個景區根據遊人的年齡收取不同**的門票。

2)遊人結構體(visitor),根據年齡段決定能夠購買的門票**並輸出

3)規矩:年齡》18 門票為20 其他情況免費

4)可以迴圈從控制台輸入名字和年齡,列印門票收入情況,如果名字輸入n,則推出程式

#include

#include

struct visitor

//因為結構體預設為值傳遞,會拷貝乙份完整的資料,因此,為了提高效率,我們直接接收位址

void

ticket

(struct vistor*vistor)

else

}void

main()

ticket

(&vistor)

;printf

("門票錢%d"

,ticket.pay);}

printf

("退出程式"

); getchar()

;getchar()

;}

共用體的記憶體布局

實踐

#include

#define total 2

//人員總數

struct personsc

}void

main()

else

fflush

(stdin);

//重新整理

}//輸出人員資料..

....

....

....

}

共用體和結構體

共用體和結構體的宣告與初始化的格式不同。宣告 struct or union new st 初始化 new st 和陣列一樣,使用逗號分隔,並用花括號括起。也可以全放在一行。可以同時完成定義結構和建立結構變數的工作,只需要將變數名放在結束括號的後面 struct or union new st ne...

結構體和共用體

宣告結構和結構體變數 include include define maxtitl 41 define maxautl 31 define max 100 結構宣告 並未建立實際的資料物件 也稱結構宣告為模板 struct bookbok int main 復合字面常量 bk1 struct boo...

結構體和共用體

通過前面的講解,我們知道結構體 struct 是一種構造型別或複雜型別,它可以包含多個型別不同的成員。在c語言中,還有另外一種和結構體非常類似的語法,叫做共用體 union 它的定義格式為 union 共用體名 共用體有時也被稱為聯合或者聯合體,這也是 union 這個單詞的本意。結構體和共用體的區...