C語言結構體 1 引申出結構體的定義

2021-10-03 17:34:24 字數 1734 閱讀 3573

假設我們現在要開發乙個圖書管理系統,當有讀者要借閱圖書的時候,需要登記讀者資訊,讀者的資訊有: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...