假設我們現在要開發乙個圖書管理系統,當有讀者要借閱圖書的時候,需要登記讀者資訊,讀者的資訊有:1 姓名,2 年齡,3 學號。那麼,就分析:
(1) 讀者的姓名是字元,使用字元陣列來存放,可以定義:char name[32];
(2) 讀者的年齡是數值,使用整形變數來存放,可以定義:int age;
(3) 讀者的學號是數值,使用整形變數來存放,可以定義:int number;
此時,定義的這3個變數就表示了乙個讀者的資訊。如果有3個讀者的資訊,那麼,應該怎麼樣設計?我們可以想到如下的方法:
char
name1[32];
intage1;
intnumber1;
---表示第 1 個讀者
char
name2[32];
intage2;
intnumber2;
---表示第 2 個讀者
char
name3[32];
intage3;
intnumber3;
---表示第 3 個讀者
這樣就表示3個讀者的資訊,假設讀者的資訊改變了,需要給讀者新增乙個**號碼的資訊,那麼,這種**設計就不夠靈活,擴充套件性差;
針對這種問題,c語言提供了「結構體」的定義,定義出來的結構體就是一種資料型別,可以用它來定義變數。
結構體型別是由多個「成員」組成,每乙個成員可以是「基本資料型別」或者「結構體型別」定義的變數。結構體的定義格式如下:
struct
結構體型別名 ;
結構體型別的定義格式,需要注意如下幾點:
(1) 必須使用關鍵字 struct 開始,然後,接著空格,再接著我們自定義的結構體型別名;
(2) 結構體型別名是乙個合法的標示符;
(3) 結構體型別名後面接著大括號;在大括號中定義成員列表;
(4) 成員列表是由「基本資料型別」或「結構體型別」定義的變數;
(5) 在結構體型別定義的末尾,必須使用引號「;」作為結束符;
那麼,可以使用定義好的「結構體型別」來定義變數,定義變數的格式與基本資料型別定義變數格式一樣,如下:
struct
結構體型別名 變數名;
所以,對於前面提到的「讀者資訊定義問題」,就可以使用結構體型別來解決。我們可以定義乙個結構體型別,裡面的成員就是讀者的資訊。定義讀者資訊的結構體型別如下:
//定義結構體型別
struct
reader ;
此時,我們就把乙個讀者的資訊封裝到乙個結構體型別中。那麼,就可以使用該結構體型別來定義乙個讀者變數。例如:
struct
reader r1;
//用定義的結構體型別定義變數
struct
reader r2;
struct
reader r3;
此時,我們就定義了讀者變數,完整地表示了讀者的資訊。如果要對讀者的結構進行修改,增加乙個**號碼的屬性,或者去掉學號的屬性,直接修改struct reader結構體的定義就可以了。非常靈活,提高程式設計的靈活性和系統的擴充套件性。
結構體型別作為一種自定義的資料型別,可以用來定義變數;那麼,也可以嵌入到其他結構體的成員變數中定義成員。例如,圖書館規定一天只能夠接納500位讀者,那麼,可以定義如下的結構體:
//定義圖書館結構體
struct
library ;
可以看到,定義了struct library結構體型別,該型別中的成員列表,有基本資料型別定義的變數,也有結構體型別定義的變數。
C語言結構體1
二 結構體變數的初始化 三 結構體變數的引用 四 通過函式完成結構體變數的輸入與輸出 五 typedef與結構體一起使用 六 應用 c語言有五種基本資料型別 字元型 char,整型 int,單精度實數型 float,雙精度實數型 double,空型別 void 要想建立一種新的資料型別要怎麼做呢?這...
結構體巢狀結構體 C語言結構體
希望今年夏天的遺憾能成為你秋天的驚喜。網易雲熱評 一 結構體概念 可以簡單理解為把不同資料型別放到一起的陣列 二 結構體宣告與初始化 1 先宣告結構體型別再定義變數 2 同時定義變數 3 直接定義結構體型別變數 include include include include struct aiyou...
C語言結構體和結構體排序
結構體 結構體是一種構造資料型別 構造資料型別包括 陣列型別 結構體型別 共用體型別 定義 把不同的資料組合成乙個整體。結構體的一般形式struct 結構體名稱 struct是關鍵字 不要忘記這裡的分號定義結構體的三種方法 第一種 先定義結構體型別,在定義變數名 struct student str...