結構體1 引申出結構體的定義

引申出結構體的定義

假設我們現在要開發一個圖書管理系統,當有讀者要借閱圖書的時候,需要登記讀者信息,讀者的信息有:1 姓名,2 年齡,3 學號。那麼,就分析:

(1) 讀者的姓名是字符,使用字符數組來存放,可以定義:char name[32];

(2) 讀者的年齡是數值,使用整形變量來存放,可以定義:int age;

(3) 讀者的學號是數值,使用整形變量來存放,可以定義:int number;

此時,定義的這3個變量就表示了一個讀者的信息。如果有3個讀者的信息,那麼,應該怎麼樣設計?我們可以想到如下的方法:

char name1[32]; int age1; int number1; --- 表示第 1 個讀者

char name2[32]; int age2; int number2; --- 表示第 2 個讀者

char name3[32]; int age3; int number3; --- 表示第 3 個讀者

這樣就表示3個讀者的信息,假設讀者的信息改變了,需要給讀者添加一個電話號碼的信息,那麼,這種代碼設計就不夠靈活,擴展性差;

針對這種問題,C語言提供了“結構體”的定義,定義出來的結構體就是一種數據類型,可以用它來定義變量。

結構體類型是由多個“成員”組成,每一個成員可以是“基本數據類型”或者“結構體類型”定義的變量。結構體的定義格式如下:

struct 結構體類型名

{

成員列表;

};

結構體類型的定義格式,需要注意如下幾點:

(1) 必須使用關鍵字 struct 開始,然後,接着空格,再接着我們自定義的結構體類型名;

(2) 結構體類型名是一個合法的標示符;

(3) 結構體類型名後面接着大括號;在大括號中定義成員列表;

(4) 成員列表是由“基本數據類型”或“結構體類型”定義的變量;

(5) 在結構體類型定義的末尾,必須使用引號“;”作爲結束符;

那麼,可以使用定義好的“結構體類型”來定義變量,定義變量的格式與基本數據類型定義變量格式一樣,如下:

struct 結構體類型名  變量名;

所以,對於前面提到的“讀者信息定義問題”,就可以使用結構體類型來解決。我們可以定義一個結構體類型,裏面的成員就是讀者的信息。定義讀者信息的結構體類型如下:

//定義結構體類型

struct reader

{

//定義結構體的成員;

char name[32]; //讀者姓名

int age; //讀者年齡

int number; //讀者學號

};

此時,我們就把一個讀者的信息封裝到一個結構體類型中。那麼,就可以使用該結構體類型來定義一個讀者變量。例如:

struct reader r1; //用定義的結構體類型定義變量

struct reader r2;

struct reader r3;

此時,我們就定義了讀者變量,完整地表示了讀者的信息。如果要對讀者的結構進行修改,增加一個電話號碼的屬性,或者去掉學號的屬性,直接修改struct reader結構體的定義就可以了。非常靈活,提高程序設計的靈活性和系統的擴展性。

結構體類型作爲一種自定義的數據類型,可以用來定義變量;那麼,也可以嵌入到其他結構體的成員變量中定義成員。例如,圖書館規定一天只能夠接納500位讀者,那麼,可以定義如下的結構體:

//定義圖書館結構體

struct library

{

//定義一天中登記的讀者集合

struct reader people[500];

int start_time; //圖書館開館時間

int end_time; //圖書館閉館時間

};

可以看到,定義了struct library結構體類型,該類型中的成員列表,有基本數據類型定義的變量,也有結構體類型定義的變量。

更多的交流可以訪問:www.mylinux.vip   加QQ:1523520001,微信:13926572996,備註:linux編程;
學習、分享更多的linux C/C++ 編程知識。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章