




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言程序設計基礎與實踐模塊四編程高級應用任務4.3結構體C語言程序設計基礎與實踐課程組04技能點拓展03技能點詳解02技能點分析目錄CONTENTS任務4.3結構體01問題引入05技能點檢測一問題引入現實生活中,我們對某一個物體的描述往往都是通過多個信息的組合來完成,比如一個人,他要有姓名、性別、身高、體重等等基本信息,否則無法完整描述一個人的所有特征。再比如描述書本的信息、動物的信息等等,也是如此。為了描述這類數據,在C語言中設計了一類數據,它描述的是一個對象的信息,但是是通過多種基本類型信息組合來完成,這種數據我們稱之為“結構體”,那么結構體在使用時我們應該注意哪些事項呢?04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務4.3結構體二技能點分析1.結構體類型2.結構體與函數3.結構體數組學習目標1.什么是結構體?2.如何聲明結構體?3.結構體變量訪問有哪些方式?4.如何定義結構體數組?學期預習04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務4.3結構體C數組允許定義可存儲相同類型數據項的變量,結構是C編程中另一種用戶自定義的可用的數據類型,它允許您存儲不同類型的數據項。結構用于表示一條記錄,假設您想要跟蹤圖書館中書本的動態,您可能需要跟蹤每本書的下列屬性:標題作者小標題出版號……struct結構體類型名稱{
數據類型
成員1;
數據類型
成員2;
…
數據類型
成員n;}變量1,…變量n;三技能點詳解——結構體三技能點詳解——1結構體類型聲明(1)結構體類型聲明以關鍵字struct開頭,后面跟的是結構體類型的名稱,該名稱的命名規則與變量名相同;(2)結構體類型與整型、浮點型、字符型等類似,只是數據類型,而非變量。(3)聲明好一個結構體類型后,編譯器并不為其分配內存。structBook{
chartitle[250]; //書的標題
charauthor[250]; //書的作者
charsubject[200]; //書的主題
intbookid; //書的出版號}三技能點詳解——2結構體變量定義1)先聲明結構體類型,再聲明結構體變量,例如:structBookbk1={“C語言編程”,“王教授”,“入門技術”,20220001},bk2={“BASIC語言編程”,“張教授”,“高級技術”,20220002};三技能點詳解——2結構體變量定義2)在定義結構體類型的同時定義結構體變量structBook{
chartitle[250]; //書的標題
charauthor[250]; //書的作者
charsubject[200]; //書的主題
intbookid; //書的出版號}bk1,bk2; //Book類型變量bk1,bk2三技能點詳解——2結構體變量定義3)結構體變量初始化結構體變量初始化的方式和其他類型變量沒有太多區別,主要有兩種,就是先聲明后初始化和定義事同時初始化兩種形式/*聲明結構體變量的同時對其進行初始化*/structBook{
chartitle[250];
charauthor[250];
charsubject[200];
intbookid;
}bk1={“c語言編程”,”王教授”,”入門技術”,20220001};/*使用聲明后的結構體類型定義結構體變量并對結構體變量初始化*/structBookbk2={“BASIC語言編程”,”張教授”,”高級技術”,202200022};三技能點詳解——2結構體變量定義4)結構體數組的訪問定義并初始化結構體變量的目的是使用結構體變量中的成員。在C語言中,訪問結構體變量中成員的方式如下所示:結構體變量名.成員名例如訪問上述定義的structstudentstu變量中的成員:/*聲明結構體變量bk1,bk2,并對bk2初始化*/structBookbk1,bk2={“BASIC語言編程”,”張教授”,”高級技術”,202200022};/*通過bk1.titlel訪問結構體的成員值賦值給bk1.title*/bk1.title=bk1.titlel;
三技能點詳解——案例1/***************************************利用結構體類型編制一程序,實現輸入一個學生*的數學期中和期末成績。**************************************/#include
<stdio.h>voidmain(){structstudy{intmid;
intend;
intaverage; }math; printf("%s","請輸入學生的期中和期末數學成績:"); scanf("%d%d",&math.mid,&math.end); math.average=(math.mid+math.end)/2; printf("學生的期中和期末數學平均成績是=%d\n",math.average);}三技能點詳解——案例2
實例4.3.2
/*******************************************建立一個帶有頭結點的單向鏈表,鏈表結點中的數據*通過鍵盤輸入,當輸入數據為-1時,表示輸入結束。*鏈表表空的條件是ph->next=’\0’)。******************************************/#include
<stdio.h>#include
<stdlib.h>//定義一個單向鏈表類型結構體,其中一個是int數值成員,另一個next是指針,用于指向下一個結點元素
structlist{
intdata; //儲存數據的字段
structlist*next; //指向下一個structlist類型數據的指針
};
structlist*creatlist()/ /定義一個
structlist型指針函數creatlist(){structlist*p,*q,*ph;
inta;
/************************************************malloc()用于分配一個structlist類型存儲空間,并*返回空間的地址存儲在ph中********************************************/ph=(structlist*)malloc(sizeof(structlist));/********************************************創建單向鏈表,ph記錄頭指針,p記錄新創建的節點,*q記錄尾部節點*******************************************/p=q=ph; printf("輸入整數,輸入–1結束輸入
:\n");scanf("%d",&a); //輸入一個數據存儲在a中
if(a!=-1) //如果第一個數不是-1,開始創建鏈表
{ph->data=a; //輸入數據存儲在a中
ph->next='\0'; //節點的next指針置為空'\0'三技能點詳解——案例2
scanf("%d",&a);
while(a!=-1) //如果輸入的數不是-1,繼續創建鏈表 /*malloc()分配一個structlist類型存儲空間作為新節點,地址存儲在p中*/{p=(structlist*)malloc(sizeof(structlist)); p->data=a; //a賦值給新創建的鏈表節點的data成員中
q->next=p; //q節點的next指針指向新創建的節點
q=p; //q指針移動新創建的節點上,作為新的尾部節點
scanf("%d",&a); } p->next='\0'; //最后一個節點的next指針置為空'\0'
}
return(ph); //返回ph中的地址作為函數的返回值
}voidmain(){structlist*head,*p;head=creatlist(); p=head;
while(p!='\0') //通過p指針的移動訪問、輸出列表中的數據成員的值
{ printf("%d",p->data); p=p->next; //p指針的移動到下一個節點
};}04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務4.2指針四技能點拓展——1結構體與函數在函數間不僅可以傳遞簡單的變量、數組、指針等類型的數據,還可以傳遞結構體類型的數據。結構體變量作為函數參數的用法與普通變量類似,都需要保證調用函數的實參類型和被調用函數的形參類型相同。可以把結構作為函數參數,傳參方式與其他類型的變量或指針類似。函數間不僅可以傳遞一般的結構體變量,還可以傳遞結構體數組。使用結構體數組作為函數參數傳遞數據。四技能點拓展——2
typedef的使用C語言提供了typedef關鍵字,您可以使用它來為類型取一個新的名字。例如前面所學過的結構體、指針、數組、int、double等都可以使用typedef關鍵字為它們另取一個名字。使用typedef關鍵字可以方便程序的移植,減少對硬件的依賴性。基本用法如下typedef
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子版勞務合同協議書
- 洗鞋店合作合同協議書
- 未轉正員工旅游協議書
- 拆除鋼筋棚安全協議書
- 工程款合同解除協議書
- 幼兒園園長合同協議書
- 湖南水利水電局協議書
- 貝拉結婚協議書
- 就業協議和意向協議書
- 男人結婚協議書
- 2025年山東省青島市即墨區九年級二模考試數學試卷
- 2025-2030中國DCS控制系統行業市場現狀分析及競爭格局與投資發展研究報告
- 2025屆浙江省金華市義烏市高三下學期三模物理試題(含答案)
- 招投標相關知識培訓課件
- 中國血脂管理指南2024版解讀課件
- 大學生宿舍設計調研報告
- 煤礦“一通三防”安全管理措施的有效性分析
- 外貿英語電子課件
- 2025年中考時事政治100題(附答案解析)
- 七年級下冊《山地回憶》課件
- 浦東文員面試題及答案
評論
0/150
提交評論