![C課件-結構體數(shù)組做函數(shù)參數(shù).ppt_第1頁](http://file.renrendoc.com/FileRoot1/2019-2/1/e69972c7-151d-4ed6-910f-766ef3dd517b/e69972c7-151d-4ed6-910f-766ef3dd517b1.gif)
![C課件-結構體數(shù)組做函數(shù)參數(shù).ppt_第2頁](http://file.renrendoc.com/FileRoot1/2019-2/1/e69972c7-151d-4ed6-910f-766ef3dd517b/e69972c7-151d-4ed6-910f-766ef3dd517b2.gif)
![C課件-結構體數(shù)組做函數(shù)參數(shù).ppt_第3頁](http://file.renrendoc.com/FileRoot1/2019-2/1/e69972c7-151d-4ed6-910f-766ef3dd517b/e69972c7-151d-4ed6-910f-766ef3dd517b3.gif)
![C課件-結構體數(shù)組做函數(shù)參數(shù).ppt_第4頁](http://file.renrendoc.com/FileRoot1/2019-2/1/e69972c7-151d-4ed6-910f-766ef3dd517b/e69972c7-151d-4ed6-910f-766ef3dd517b4.gif)
![C課件-結構體數(shù)組做函數(shù)參數(shù).ppt_第5頁](http://file.renrendoc.com/FileRoot1/2019-2/1/e69972c7-151d-4ed6-910f-766ef3dd517b/e69972c7-151d-4ed6-910f-766ef3dd517b5.gif)
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第十講,第十章 結構體和共用體,結構體類型的定義 結構體類型變量的定義 結構體類型變量的初始化和引用 結構體數(shù)組,10.1 結構體,問題 數(shù)組能方便的處理一組同類型的數(shù)據(jù),那么對一組不同類型的數(shù)據(jù)如何管理和引用呢? 使用結構體。,例: 學生姓名,性別,年齡,身高,體重等,,結構體屬于構造類型,在內存中占據(jù)連續(xù)的存儲空間。 C語言本身沒有結構體類型,用戶要做兩項工作: 1)定義結構體類型:描述結構體成員及其類型; 2)定義結構體變量:為結構體成員分配存儲空間。,10.1.1 結構體類型的定義,結構體類型的定義 一般格式,struct 結構體名 類型名1 成員名1; 類型名2 成員名2; 類型名n 成員名n; ;,struct date int year,month,day; ;,10.1.1 結構體類型的定義,結構體類型定義的格式說明: struct:關鍵字,是定義結構體類型的標志。 結構體名:標識符,其命名規(guī)則同變量名。 struct 結構體名:結構體類型名,作用等同于int、float等關鍵字,用于定義結構體變量。 類型名1n:說明了結構體成員的數(shù)據(jù)類型。 成員名1n:用戶定義的一個或多個結構體成員的名稱,其命名規(guī)則同變量名。多個同類型的成員彼此間用逗號分隔。,10.1.2 結構體類型變量的定義,注意: 結構體類型的定義只是指出了該結構體的組成情況,系統(tǒng)并不會為它分配實際的存儲單元。應在定義了結構體類型以后,再定義該結構體類型的變量(簡稱結構體變量),以便在結構體變量中存放具體的數(shù)據(jù)。 結構體變量的定義方式有三種: 先定義結構體類型,再定義結構體變量。 在定義結構體類型的同時定義結構體變量。 直接定義結構體變量。,10.1.2 結構體類型變量的定義,方式I.先定義結構體類型,再定義結構體變量,10.1.2 結構體類型變量的定義,struct date int year; int month; int day; ; struct data today,tomorrow;,year month day 2012 5 16 2012 5 17,today tomorrow,12個字節(jié),today和tomorrow的存儲形式為:,例:,10.1.2 結構體類型變量的定義,方式II. 在定義結構體類型的同時定義結構體變量。,struct student int num; char name10; char sex; float score4; stu1,stu2;,struct date int year; int month; int day; today,tomorrow;,例:,10.1.2 結構體類型變量的定義,方式III. 定義無名結構體變量,struct int num; char name10; char sex; float score4; stu1,stu2;,struct int year; int month; int day; today,tomorrow;,例:,10.1.2 結構體類型變量的定義,關于結構體的說明: 1、類型與變量是不同的概念,應注意區(qū)分。 系統(tǒng)可以對變量賦值、存取、運算,而類型則不能。 編譯時,系統(tǒng)只為變量分配存儲單元,而類型則不分配。,10.1.2 結構體類型變量的定義,2、不同結構體的成員名可以相同,不互相沖突。,struct date int year,month,day; ; struct Book char title50,writer20,publisher50; int year,month; ; int year,month,day;,10.1.2 結構體類型變量的定義,3、結構體的成員可以是基本類型和構造類型。,struct date int year,month,day; ; struct student int num; char name10; char sex; struct date birthday; float score4; stu1,stu2;,struct student int num; char name10; char sex; struct date int year,month,day; birthday; float score4; stu1,stu2;,10.1.2 結構體類型變量的定義,4、可以使用typedef關鍵字為結構體類型定義一個別名。,typedef struct _Student char id10; char name10; int score3; int sum; Student;,以后就可以用Student代替結構體類型名來定義結構體變量了。 例如: Student stu1, stu2; 等價于: struct _Student stu1, stu2;,10.1.3 結構體類型變量的初始化和引用,結構體變量的初始化類似于對數(shù)組的初始化,由于結構體變量的成員可以有不同的數(shù)據(jù)類型,所以各個初值必須與相應成員保持類型一致或兼容。,例:,struct _Student char id10; char name10; int score3; int sum; stu1 = “2012301101“, “胡樹偉“, 87, 71, 81;,10.1.3 結構體類型變量的初始化和引用,10.1.3 結構體類型變量的初始化和引用,例:,struct date int year, month, day; ; struct _student2 char num15; char name10; struct date birth; int score3; int aver; stu1=“200361070001“,“Hushuwei“,1984,10,8,87,71,81;,10.1.3 結構體類型變量的初始化和引用,對結構體變量初始化的說明: 對結構體變量進行初始化時,系統(tǒng)是按每個成員在結構體變量中的順序一一對應賦初值的。若只對部分成員進行初始化,則只能給前面的若干成員賦值,而不允許跳過前面的成員給后面的成員賦值。 例如:前面兩例中結構體變量stu1和stu2的成員sum沒有獲得指定初值,而是獲得默認初值0。,10.1.3 結構體類型變量的初始化和引用,對結構體變量中成員的引用 一般格式 結構體變量名 . 成員名,其中:“為結構體成員運算符,1級運算符。 例如:stu1.sum表示對結構體變量stu1中的sum成員進行引用。,10.1.3 結構體類型變量的初始化和引用,結構體變量的引用規(guī)則: 1、不能將結構體變量作為一個整體進行輸入和輸出。 例如:,struct _Student3 long num; int age; char sex; st;,下面的寫法是錯誤的: scanf(“%ld%d%c“, ,10.1.3 結構體類型變量的初始化和引用,結構體變量的引用規(guī)則: 2、內嵌結構體成員的引用,必須逐層使用成員名定位,找到最底層的成員。 例如: struct date int year, month, day; ; struct _Student2 char id10, name10; struct date birth; int score3, sum; stu2 = “20123002“, “李冬“, 1987, 5, 3, 75, 85, 76; printf(“birthday=%d年%d月%d日n“, stu2.birth.year, stu2.birth.month, stu2.birth.day);,10.1.3 結構體類型變量的初始化和引用,結構體變量的引用規(guī)則: 3、若結構體的成員是字符數(shù)組,可對其進行直接引用。 例如: struct _Student char id10; char name10; int score3; int sum; stu1; scanf(“%s%s“, stu1.id, ); printf(“id=%s, name=%s“, stu1.id, );,10.1.3 結構體類型變量的初始化和引用,結構體變量的引用規(guī)則: 4、若結構體的成員是數(shù)值型數(shù)組,則應逐個引用數(shù)組中的元素。 例如: struct _Student char id10; char name10; int score3; int sum; stu1; scanf(“%d%d%d“, ,10.1.3 結構體類型變量的初始化和引用,例 結構體變量的輸入和輸出 typedef struct _Student char id10, name10; int score3, sum; Student; /*定義結構體類型別名*/ void main( ) Student stu1, stu2; /*定義結構體變量*/ scanf(“%s%s%d%d%d“, stu1.id, , ,10.1.4 結構體數(shù)組,一個結構體變量一次只能存放一組數(shù)據(jù),如一個學生的信息。 全班學生信息,則用結構體數(shù)組。 結構體數(shù)組的每個數(shù)組元素都是一個結構體變量,它們都分別包括各個成員項。,10.1.4 結構體數(shù)組,結構體數(shù)組的定義 三種形式,10.1.4 結構體數(shù)組,結構體數(shù)組的初始化 結構體數(shù)組的初始化與普通數(shù)組的初始化相似。,struct _student char num15,name10; int score3; float aver; stu50=“200361070001”,“Hushuwei”,87,71,81, “200361070002“,“Zhangfan“,76,78,85, “200361070003“,“Wujiaxin“,70,91,78;,10.1.4 結構體數(shù)組,結構體數(shù)組的引用 結構體數(shù)組的引用與結構體變量的引用相似。,例:查詢學生基本信息。 (學生數(shù)據(jù)包括:學號,姓名,性別,年齡和成績。),#include #define N 5 struct student long int num; char name10; char sex; int age,score; stuN=20123001,“Zhang Mei“,M,18,85, 20123002,“Wang Hai“,M,19,87, 20123003,“Liu Jun“,F,18,90, 20123004,“Li Hui“,M,19,80, 20123005,“Chen Ming“,M,18,92;,10.1.4 結構體數(shù)組,void main() int s,t; long int xh; printf(“請輸入學號:n“); scanf(“%ld“, ,請輸入學號: 20123003 20123003 Liu Jun F 18 90,10.1.6 結構體數(shù)組名作為函數(shù)參數(shù),結構體作為參數(shù)傳遞給函數(shù)的幾種方法: 1、結構體變量的成員作為函數(shù)參數(shù) 與普通變量做函數(shù)參數(shù)一樣,傳值方式; 2、結構體變量作為函數(shù)參數(shù) 是一種多值傳遞,需要對整個結構體做一份拷貝,效率低。 3、結構體指針做函數(shù)參數(shù) 4、結構體數(shù)組名作為函數(shù)參數(shù),10.1.6 結構體數(shù)組名作為函數(shù)參數(shù),結構體數(shù)組名作為函數(shù)參數(shù)與普通數(shù)組名作為函數(shù)參數(shù)相似,傳遞的也是數(shù)組的首地址。,例:計算平均成績,打印排序成績表,#include #define N 3 #define M 3 void sort(struct _student ss , int n); struct _student char num15,name10; int score3; float aver; stuN=“200361070001“,“Lishuwei“,68,71,91, “200361070002“,“Zhangfan“,92,78,85, “200361070003“,“Wujiaxin“,70,91,78;,10.1.6 結構體數(shù)組名作為函數(shù)參數(shù),void main() int i,j,sumN; for(i=0;iN;i+) sumi=0; for(j=0;jM;j+) sumi=sumi+stui.scorej; stui.aver=sumi/3.0; sort(stu,N); for(i=0;iN;i+) printf(“%3d%15s%12s%8.2fn“,i+1,stui.num,, stui.aver); ,10.1.6 結構體數(shù)組名作為函數(shù)參數(shù),void sort(struct _student ss , int n) int i,j; struct _studen
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年山東公務員考試行測試題
- 2025年太陽能光伏組件安裝服務合同
- 2025年商業(yè)地產(chǎn)租賃協(xié)議深度剖析
- 2025年醫(yī)院食堂食用油采購協(xié)議
- 2025年紫外光固化油墨項目規(guī)劃申請報告
- 2025年互聯(lián)網(wǎng)用戶權益協(xié)議
- 2025年貨運司機勞動合同
- 2025年腫瘤類生物制品項目提案報告模范
- 2025年保障性住房貸款合同
- 2025年標準個人古董押借款合同樣本
- 輔導員入職培訓課件
- 中建雨季專項施工方案
- 《我國個人所得稅制下稅收征管問題研究》
- 建筑工程三通一平技術方案
- 綠化養(yǎng)護工安全培訓
- DB21-T 1720-2017海水源熱泵系統(tǒng)工程技術規(guī)程
- 組長競選課件教學課件
- 《基于UTAUT2模型的虛擬學術社區(qū)用戶持續(xù)使用意愿影響因素研究》
- 2022年公務員多省聯(lián)考《申論》真題(遼寧A卷)及答案解析
- 2024 ESC慢性冠脈綜合征指南解讀(全)
- 消防設施操作員(初級)題庫與參考答案
評論
0/150
提交評論