C語言第七章 C語言結構體

2022-04-15 17:50:21 字數 1935 閱讀 5440

一,什麼是結構體

c語言中給我們提供了基本的資料型別,例如:int,double,char等,但是有些時候是無法滿足我們的要求的,例如我們要儲存乙個學生整體,這個學生有姓名,身高,成績等多個字段組成,所以我們需要一種復合的資料型別,因此c語言了結構體這個概念。

把一些基本的資料型別組合在一起,形成乙個新的復合資料型別,這就叫結構體。

二,結構體的定義

結構體的定義有三種形式,但是我們只推薦使用第一種

1.定義乙個新的結構體型別(注意:必須末尾要加分號)

strutc student

;

2.定義乙個新的結構體型別,並同時定義乙個變數

struct

student

stu;

3.直接定義結構體變數,省略型別名稱

struct

stu;

4.結構體的特點:三,結構體的初始化這裡的初始化我們指用第一種方式進行定義的初始化。

結構體的初始化有兩種方式:

四,獲取結構體變數的成員

獲取結構體變數的成員有兩種方式:

五,結構體作為函式的形參

當結構體作為函式的形參進行傳遞的時候,我們這裡用結構體的位址來進行操作,即形參是結構體指標,而非結構體變數。因為在進行函式傳參的過程中,如果函式形參定義的是結構體變數則實際是對結構體的成員資料的乙份拷貝,而非真正的引用要傳遞的結構體變數,但是我們使用結構體指標則是真正的位址傳遞。而且通過結構體指標會有傳輸速度快,記憶體消耗少的優點。

# includestruct

student;//

形參為結構體變數

void updatestudent1(struct

student stu)

//形參為結構體指標變數

void updatestudent2(struct student *pstu)

int main(void);

//呼叫函式修改王剛的成績為90分

//第一種方式

updatestudent1(stu);

//輸出

printf("

成績:%f \n

",stu.score);

//第二種方式

updatestudent2(&stu);

//輸出

printf("

成績:%f \n

",stu.score);

return0;

}

結果為下圖,由此可見只有通過傳遞結構體指標變數才可以實現結構體變數成員資料的真正修改。

六,結構體綜合小應用:學生管理系統

該小程式,動態的構造了乙個陣列來儲存結構體,注意這個動態構造結構體陣列的方法和思路。

# include # include 

//定義學生結構體

struct

student;//

主函式int main(void

)

//冒泡法根據成績排序,注意這裡比較的是學生的成績,而進行交換的則是結構體變數

for(int x=0;x)}}

//列印結果

for(int j=0;j)

return0;

}

執行結果為:

C語言 第七章 結構體

在程式編寫中,我們難免會遇到一些複雜的資料型別無法用單一的普通資料型別表示,於是我們便可以通過使用結構體來定義屬於我們自己的資料型別。所謂結構體是一些值的集合,這些值成為成員變數。結構體的每個成員可以是不同型別的變數。我們將乙個個物件進行抽象,提取其中最關鍵的最核心的資訊,加以表示,並通過結構體的方...

C語言 第七章

一 在計算機中,位 bit 是表示和儲存資訊的最小單位,1b 8bit。c 語言提供一種在位一級進行操作的機制。它允許在乙個結構體中以位為單位來指定其成員所佔記憶體的長度,這種以位為單位的成員稱為 位段 或 位域 例如 struct a unsigned aa 1 unsigned bb 1 uns...

C語言基礎 C語言第七章

溫習 三種迴圈結構 while 條件表示式 迴圈體 dowhile 條件表示式 for 表示式1 表示式2 表示式3 表示式1 迴圈體 表示式3 第七章 陣列 一維陣列的定義與引用 之前講到的資料基本上都是屬於基本型別 整型 字元型 實型 的資料,c語言還提供了構造型別的資料,他們有陣列型別 結構體...