c 結構體的定義和使用

2021-10-03 05:37:32 字數 1359 閱讀 1418

在許多現實問題中,一組資料往往有很多的資料型別。比如,在一學生登記表中,有姓名,id,手機號,它們有字元型別也有整型。 顯然不能用乙個陣列來存放這一組資料。

當使用多個陣列存放時

char id[3][10]=; char name[3][10]=; char phone[3][20]= ;

發現資訊比較鬆散且不直觀,資料訪問不方便(如用id查詢乙個學生,因為欄位太多,很難用乙個函式把該學生的資訊輸出

int find(char id,char * name,char* phone)

只有兩個資訊name phone 時可以這樣直接輸出,但當其包含上百個資訊時,需要上百的輸出引數。)。又因為陣列中各元素的型別和長度都必須一致,以便於編譯系統處理。

為了解決這個問題,c++中給出了另一種構造資料型別——「結構(structure)」或叫「結構體」。 它相當於其它高階語言中的記錄。「結構」是一種構造型別,它是由若干「成員」組成的。每乙個成員可以是乙個基本資料型別或者又是乙個構造型別。

結構型別是自定義資料型別,以關鍵字struct標記,由結構型別名,各成員的名稱和型別定義。

結構既是一種「構造」而成的資料型別,那麼在說明和使用之前必須先定義它,也就是構造它。如同在說明和呼叫函式之前要先定義函式一樣。

定義乙個結構的一般形式為:

struct 結構名

;如struct contact ;

這裡定義的contact新型別與int,double等型別地位相同。

如,定義乙個變數 contact a;定義乙個陣列 contact b[4];

使用時初始化:用大括號將各個成員初始值列出。

注意1.使用大括號,末尾用分號結束。

2.各初始值的型別要與各字段的型別匹配。

3.各初始值要用逗號分開。

contact a=

;

可以初始化部分變數contact a=; //只初始化前2個成員,也可以直接清零 contact a=;在記憶體檢視中,各個成員緊密排列,相當於被組合在一起。

使用點號加上成員的名稱訪問其成員(結構變數的成員)。

結構體的作用

1、明確資料關係

2、簡化對資料塊的操作

3、簡化引數列表

4、減少維護

需要表達一些複雜的資訊時,使用單純的資料型別很不方便,所以使用結構體.

C語言結構體的定義和使用

在實際問題中,一組資料往往具有不同的資料型別 例如在學生資訊登記表中,姓名為字元型,學號為整型或字元型,年齡為整型,性別為字元型,成績為整型或實型。因為資料型別不同,顯然不能用乙個陣列來存放。在c語言中,可以使用 結構體 struct 來存放一組不同型別的資料。定義結構體的一般形式為 struct ...

C 結構體的定義和基本使用

平常使用中,我們經常需要定義多個變數,變數的型別也可能不同,這就需要我們定義很多的變數,比較繁瑣。比如需要定義場景中兩個遊戲物體的位置 物體一 float gameobjectx 1 float gameobjecty 2 float gameobjectz 3 物體二 float gameobje...

c語言結構體的定義和使用

2.編寫乙個函式print,列印乙個學生的成績陣列,該陣列中有5個學生的資料記錄,每個記錄包括num,name,score 3 用主函式輸入這些記錄,用print函式輸出這些記錄。如下 include struct student student 5 全域性結構體陣列 在全域性都可以使用,例如被調函...