C語言學習 十三 結構體

2021-10-06 19:03:05 字數 1805 閱讀 7349

陣列允許定義可儲存相同型別資料項的變數,結構是c程式設計中另一種使用者自定義的可用的資料型別,它允許您儲存不同型別的資料項.結構用於表示一條記錄,假設你想要跟蹤圖書館中書本的動態,可能需要跟蹤每本書的下列屬性:

為了定義結構,必須使用struct語句.struct語句定義了乙個包含多個成員的新的資料型別

struct ta**ariable-list;
tag是結構體標籤

member-list是標準的變數定義,比如int i; 或者float f;或者其他有效的變數定義

variable-list結構變數,定義在結構的末尾,最後乙個分號之前,您可以指定乙個或者多個結構變數

下面是宣告book結構的方式:

struct books

book;

在一般情況下,tag member-list 和variable-list這3部分至少要出現2個

例項:

//此宣告宣告了擁有3個成員的結構體,分別是整型的a,字元型的b和雙精度的c

//同時又宣告了結構體變數s1

//這個結構體並沒有標明其標籤

struct

s1;//此宣告宣告了擁有3個成員的結構體,分別是整型的a,字元型的b 和雙精度的c

//結構體的標籤被命名為******,沒有宣告變數

struct ******

;//用******標籤的結構體,另外宣告了變數t1,t2,t3

struct ****** t1, t2[20]

,*t3;

//也可以用typedef建立新型別

typedef

struct

******2;

//現在可以使用******2作為型別宣告新的結構體變數

******2 u1, u2[20]

,*u3;

在上面的宣告中,第乙個和第二宣告被編譯器當做兩個完全不同的型別,即使它們的成員列表是一樣的,如果令t3=&s1.則是非法的.

結構體的成員可以包含其他結構體,也可以包含指向自己結構體型別的指標,而通常這種指標的應用是為了實現一些更高階的資料結構如鍊表和樹等.

//此結構體的宣告包含了其他的結構體

struct complex

;//此結構體的宣告包含了指向自己型別的指標

struct node

如果兩個結構體互相包含,則需要對其中乙個結構體進行不完整宣告

struct b;

//對結構體b進行不完整宣告

//結構體a中包含指向結構體b的指標

struct a

;struct b

和其它型別變數一樣,對結構體變數可以在定義時候指定初始值

例項:

#include

struct books

book=

;int

main()

為了訪問結構的成員,我們使用成員訪問運算子(.) 成員訪問運算子是結構變數名稱和我們要訪問的結構成員之間的乙個句號.可以使用struct關鍵字來定義結構型別的變數,下面的例項就演示了結構的用法:

例項:

#include

#include

struct books

;int

main()

C語言學習 結構體

include include include 宣告結構體 struct student student結構體名 int age char int main 初始化結構體變數 bbbb strcpy s1.name,bbbb s1.age 22 s1.m 列印結構體變數,逐個列印 printf s ...

C語言學習 結構體

題目要求 學生的記錄由學號 姓名 專業組成,根據班級人數,將學生記錄存放在結構體陣列中,由於部分同學轉專業,學生記錄發生了變化,請程式設計實現根據學號查詢查詢學生並修改專業,分別輸出轉專業和未轉專業的學生記錄。要求 班級人數 學生記錄均由鍵盤輸入 include define m 100 要求 1....

c語言學習結構體

結構體格式 struct 結構體名稱 結構體是一種集合,它裡面包含了多個變數或陣列,資料型別可以相同也可以不相同。eg可以包含乙個人的身高 double 體重 int 顏值 char ii 21 結構體的定義如下所示,struct為結構體關鍵字,tag為結構體的標誌,member list為結構體成...