![工作手冊(cè)式C語(yǔ)言程序設(shè)計(jì)(第2版)課件 項(xiàng)目9 結(jié)構(gòu)體與共用體_第1頁(yè)](http://file4.renrendoc.com/view/d382ebad522b599b17ba458832f848ac/d382ebad522b599b17ba458832f848ac1.gif)
![工作手冊(cè)式C語(yǔ)言程序設(shè)計(jì)(第2版)課件 項(xiàng)目9 結(jié)構(gòu)體與共用體_第2頁(yè)](http://file4.renrendoc.com/view/d382ebad522b599b17ba458832f848ac/d382ebad522b599b17ba458832f848ac2.gif)
![工作手冊(cè)式C語(yǔ)言程序設(shè)計(jì)(第2版)課件 項(xiàng)目9 結(jié)構(gòu)體與共用體_第3頁(yè)](http://file4.renrendoc.com/view/d382ebad522b599b17ba458832f848ac/d382ebad522b599b17ba458832f848ac3.gif)
![工作手冊(cè)式C語(yǔ)言程序設(shè)計(jì)(第2版)課件 項(xiàng)目9 結(jié)構(gòu)體與共用體_第4頁(yè)](http://file4.renrendoc.com/view/d382ebad522b599b17ba458832f848ac/d382ebad522b599b17ba458832f848ac4.gif)
![工作手冊(cè)式C語(yǔ)言程序設(shè)計(jì)(第2版)課件 項(xiàng)目9 結(jié)構(gòu)體與共用體_第5頁(yè)](http://file4.renrendoc.com/view/d382ebad522b599b17ba458832f848ac/d382ebad522b599b17ba458832f848ac5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)項(xiàng)目目99結(jié)結(jié)構(gòu)構(gòu)體體與與共共用用體體項(xiàng)目9結(jié)構(gòu)體與共用體項(xiàng)項(xiàng)目目99結(jié)結(jié)構(gòu)構(gòu)體體與與共共用用體體項(xiàng)目知識(shí)要點(diǎn)知識(shí)能力目標(biāo)學(xué)時(shí)任務(wù)1單個(gè)學(xué)生信息及成績(jī)統(tǒng)計(jì)結(jié)構(gòu)體類型定義結(jié)構(gòu)體變量定義結(jié)構(gòu)體變量初始化3.結(jié)構(gòu)體變量成員的引用任務(wù)2學(xué)生會(huì)競(jìng)選計(jì)票程序1.結(jié)構(gòu)體數(shù)組的含義2.結(jié)構(gòu)體數(shù)組的定義任務(wù)3師生信息統(tǒng)計(jì)共用體類型的含義共用體變量的定義1.知識(shí)目標(biāo)掌握結(jié)構(gòu)體、共用體類型的定義。掌握結(jié)構(gòu)體、共用體變量的定義方法。掌握結(jié)構(gòu)體、共用體變量的初始化方法。掌握結(jié)構(gòu)體數(shù)組的含義及使用方法。2.能力目標(biāo)能夠使用結(jié)構(gòu)體自定義復(fù)合數(shù)據(jù)類型。能夠使用結(jié)構(gòu)體數(shù)組解決數(shù)據(jù)記錄問(wèn)題。3.素質(zhì)目標(biāo)培養(yǎng)學(xué)生獲取新知識(shí)、新技能、新方法的能力。培養(yǎng)學(xué)生獨(dú)立思考的能力。6項(xiàng)目知識(shí)要點(diǎn)與目標(biāo)項(xiàng)目9結(jié)構(gòu)體與共用體9.1單個(gè)學(xué)生信息及成績(jī)統(tǒng)計(jì)9.1.1 結(jié)構(gòu)體類型的定義結(jié)構(gòu)體屬于構(gòu)造類型,其由若干個(gè)成員組成,成員的類型既可以是基本數(shù)據(jù)類型,也可以是構(gòu)造類型,而且可以互不相同。結(jié)構(gòu)體遵循“先定義后使用”的原則,其定義包含兩個(gè)方面,一是定義結(jié)構(gòu)體類型;二是定義該結(jié)構(gòu)體類型的變量。如平時(shí)所說(shuō)的學(xué)生,它是一個(gè)群體的類型,而具體的張三、李四等對(duì)應(yīng)學(xué)生類的某個(gè)對(duì)象,可將它的數(shù)據(jù)賦值給學(xué)生類的相關(guān)變量。1.結(jié)構(gòu)體類型定義的一般形式struct結(jié)構(gòu)體類型名稱{數(shù)據(jù)類型成員名1;數(shù)據(jù)類型成員名2;……數(shù)據(jù)類型成員名n;};說(shuō)明:struct是關(guān)鍵字,結(jié)構(gòu)體類型名稱的命名規(guī)則滿足標(biāo)識(shí)符命名規(guī)則;結(jié)構(gòu)體中的成員由花括號(hào)“{}”括起來(lái),用來(lái)說(shuō)明該結(jié)構(gòu)體有哪些成員及各成員的數(shù)據(jù)類型;結(jié)構(gòu)體類型定義末尾括號(hào)后的分號(hào)“;”必不可少。項(xiàng)目9結(jié)構(gòu)體與共用體9.1單個(gè)學(xué)生信息及成績(jī)統(tǒng)計(jì)【例9.1】定義結(jié)構(gòu)體類型來(lái)描述學(xué)生信息,學(xué)生信息由學(xué)號(hào)、姓名、班級(jí)和課程成績(jī)組成,程序如下。
struct
student{
int
sno;char
name[10];char
classname[20];float
grade[5];};2.類型定義在C語(yǔ)言中,允許用戶使用typedef語(yǔ)句定義新的數(shù)據(jù)類型名代替已有的數(shù)據(jù)類型名。類型定義的一般形式為:typedef類型名新類型名其中,typedef是關(guān)鍵字,類型名是標(biāo)準(zhǔn)類型名或用戶自定義的構(gòu)造類型名,新類型名是對(duì)已有類型名重新定義的新名稱。例如:typedef
int
INTEGER;這樣就將系統(tǒng)提供的int類型重新定義為INTEGER,在程序中就可以用INTEGER定義變量。例如:INTEGER
x,y;
//其功能與int
x,y等價(jià)?!纠?.2】使用typedef為結(jié)構(gòu)體student定義一個(gè)新的類型名STU,程序如下。
typedef
struct
student{
int
sno;char
name[10];char
classname[20];float
grade[5];}STU;說(shuō)明:使用typedef只是定義了一個(gè)新的類型名代替已有的類型名,并沒(méi)有建立一個(gè)新的數(shù)據(jù)類型。項(xiàng)目9結(jié)構(gòu)體與共用體9.1.2
結(jié)構(gòu)體變量的定義{
數(shù)據(jù)類型成員名1;數(shù)據(jù)類型成員名2;……數(shù)據(jù)類型成員名n;};struct結(jié)構(gòu)體類型名變量名;結(jié)構(gòu)體類型定義后就可以作為一種已存在的數(shù)據(jù)類型使用,但此時(shí)的結(jié)構(gòu)體只是一個(gè)“模型”,并沒(méi)有具體的數(shù)據(jù),只是告訴編譯系統(tǒng)該結(jié)構(gòu)由哪些類型的數(shù)據(jù)組成,各占多少字節(jié),并把它們當(dāng)作一個(gè)整體來(lái)處理。定義了結(jié)構(gòu)體類型之后,編譯系統(tǒng)沒(méi)有在內(nèi)存中為它分配內(nèi)存空間。為了在程序中使用結(jié)構(gòu)體類型的數(shù)據(jù),必須定義結(jié)構(gòu)體類型的變量。結(jié)構(gòu)體變量的定義有如下3種方式。1.先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量例如:struct結(jié)構(gòu)體類型名稱struct
student9.1單個(gè)學(xué)生信息及成績(jī)統(tǒng)計(jì){
int
sno;char
name[10];char
classname[20];float
grade[5];};struct
student
stu1;項(xiàng)目9結(jié)構(gòu)體與共用體2.在定義結(jié)構(gòu)體類型的同時(shí),定義結(jié)構(gòu)體變量
struct結(jié)構(gòu)體類型名稱{
數(shù)據(jù)類型成員名1;數(shù)據(jù)類型成員名2;……數(shù)據(jù)類型成員名n;}結(jié)構(gòu)體變量;例如:struct
student{
int
sno;char
name[10];char
classname[20];float
grade[5];}stu1;9.1單個(gè)學(xué)生信息及成績(jī)統(tǒng)計(jì)3.直接定義結(jié)構(gòu)體變量
struct{
數(shù)據(jù)類型成員名1;數(shù)據(jù)類型成員名2;……數(shù)據(jù)類型成員名n;}結(jié)構(gòu)體變量;例如:
struct{
int
sno;char
name[10];char
classname[20];float
grade[5];}stu1;小提示:采用這種方式定義的結(jié)構(gòu)體沒(méi)有類型名稱,會(huì)影響在后面的程序中定義同類型的變量。4.結(jié)構(gòu)體變量的內(nèi)存分配結(jié)構(gòu)體變量定義后,編譯系統(tǒng)會(huì)為其分配內(nèi)存空間。結(jié)構(gòu)體變量所占用的實(shí)際字節(jié)數(shù)等于各個(gè)成員所占用字節(jié)數(shù)的總和。結(jié)構(gòu)體變量stu1中各成員占用內(nèi)存示意圖如圖9-1所示,共占用54字節(jié)。圖9-1結(jié)構(gòu)體變量stu1中各成員占用內(nèi)存示意圖項(xiàng)目9結(jié)構(gòu)體與共用體9.1.3
結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量初始化的過(guò)程,就是結(jié)構(gòu)體中各個(gè)成員初始化的過(guò)程。結(jié)構(gòu)體變量的初始化有兩種方式。1.在定義結(jié)構(gòu)體類型和結(jié)構(gòu)體變量的同時(shí),對(duì)結(jié)構(gòu)體變量初始化例如:struct
student{int
sno;char
name[10];char
classname[20];float
grade[5];}stu1{20190101,"王明","云計(jì)算19級(jí)1班",{91,86,
75,87,
63}};上述示例中定義了結(jié)構(gòu)體變量stu1,并對(duì)其進(jìn)行了初始化,此時(shí)結(jié)構(gòu)體變量stu1的存儲(chǔ)結(jié)構(gòu)如圖9-2所示。圖9-2結(jié)構(gòu)體變量stu1的存儲(chǔ)結(jié)構(gòu)9.1單個(gè)學(xué)生信息及成績(jī)統(tǒng)計(jì)2.定義結(jié)構(gòu)體類型后,對(duì)結(jié)構(gòu)體變量初始化例如:struct
student{int
sno;char
name[10];char
classname[20];float
grade[5];};struct
student
stu1{20190101,"王明
","云計(jì)算19級(jí)1班",{91,
86,
75,87,63}};項(xiàng)目9結(jié)構(gòu)體與共用體9.1單個(gè)學(xué)生信息及成績(jī)統(tǒng)計(jì)9.1.4
結(jié)構(gòu)體變量成員的引用結(jié)構(gòu)體變量的初始化操作完成了對(duì)結(jié)構(gòu)體變量中所有成員的賦值,接下來(lái)便可以引用結(jié)構(gòu)體變量的成員。引用結(jié)構(gòu)體變量成員的語(yǔ)法結(jié)構(gòu)是:結(jié)構(gòu)體變量名.成員名例如:stu1.sno=20190101;="王明";stu1.classname="云計(jì)算19級(jí)1班";
stu1.grade[0]=91;stu1.grade[1]=86;stu1.grade[2]=75;stu1.grade[3]=87;stu1.grade[4]=63;說(shuō)明:其中“.”是運(yùn)算符,表示對(duì)結(jié)構(gòu)體變量的成員進(jìn)行訪問(wèn),它的優(yōu)先級(jí)最高。項(xiàng)目9結(jié)構(gòu)體與共用體9.2學(xué)生會(huì)競(jìng)選計(jì)票程序結(jié)構(gòu)體數(shù)組的含義數(shù)組元素類型為結(jié)構(gòu)體類型的數(shù)組稱為結(jié)構(gòu)體數(shù)組,在C語(yǔ)言中,允許使用結(jié)構(gòu)體數(shù)組存放對(duì)象的數(shù)據(jù)。結(jié)構(gòu)體數(shù)組的定義類似于結(jié)構(gòu)體變量的定義,結(jié)構(gòu)體數(shù)組的定義只是將“變量名”用“結(jié)構(gòu)體數(shù)組名[數(shù)組的長(zhǎng)度]”代替,有以下
3種方式。(1)先定義結(jié)構(gòu)體類型,然后定義結(jié)構(gòu)體數(shù)組。struct結(jié)構(gòu)體名{……}struct結(jié)構(gòu)體名結(jié)構(gòu)體數(shù)組名[數(shù)組的長(zhǎng)度];定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體數(shù)組。struct結(jié)構(gòu)體名{……}結(jié)構(gòu)體數(shù)組名[數(shù)組的長(zhǎng)度];匿名結(jié)構(gòu)體數(shù)組定義。struct{……}結(jié)構(gòu)體數(shù)組名[數(shù)組的長(zhǎng)度];【例9.3】以下程序段是定義結(jié)構(gòu)體數(shù)組。struct
student{int
sno;char
name[20];
char
classname[20];double
grade[3];};struct
student
stu[2];本例中,定義了一個(gè)包含2個(gè)元素的數(shù)組
stu,其中數(shù)組元素stu[0]、stu[1]的類型都是結(jié)構(gòu)體類型student。項(xiàng)目9結(jié)構(gòu)體與共用體9.3師生信息統(tǒng)計(jì)9.3.1
共用體類型的定義定義共用體類型的語(yǔ)法結(jié)構(gòu)是:
union共用體類型名稱{
數(shù)據(jù)類型成員1;數(shù)據(jù)類型成員2;……數(shù)據(jù)類型成員n;};例如:定義一個(gè)名為data的共用體類型,該類型由3個(gè)成員組成,它們共享同一塊內(nèi)存空間,程序如下。
union
data{
int
x;double
y;char
z;};項(xiàng)目9結(jié)構(gòu)體與共用體9.3師生信息統(tǒng)計(jì)9.3.2
共用體變量的定義共用體變量的定義和結(jié)構(gòu)體變量的定義類似,可以采用3種方式。這里僅以“先定義共用體類型,再定義共用體變量”方式進(jìn)行說(shuō)明。例如,定義了一個(gè)共用體變量d1,該變量的3個(gè)成員分別需要占用內(nèi)存的大小為4字節(jié)、8字
節(jié)、1字節(jié),編譯器為共用體變量d1分配內(nèi)存空間時(shí)按照其成員字節(jié)數(shù)最大的數(shù)目分配,即為變量d1分配了8字節(jié)的內(nèi)存空間。union
data{ int
x;double
y;char
z;};union
data
d1;項(xiàng)目9結(jié)構(gòu)體與共用體9.3師生信息統(tǒng)計(jì)【例9.4】利用sizeof()函數(shù)計(jì)算結(jié)構(gòu)體和共用體類型的數(shù)據(jù)分別在內(nèi)存中占用的字節(jié)數(shù),程序如下。
#include
<stdio.h>union
data1{
int
x;double
y;char
z;};struct
data2{
int
x;double
y;char
z;};int
main(){
union
data1
d1;struct
data2
d2;pirntf("共用體d1占的字節(jié)數(shù)為:%d\n",sizeof(d1));pirntf("結(jié)構(gòu)體d2占的字節(jié)數(shù)為:%d\n",sizeof(d2));return
0;}項(xiàng)目9結(jié)構(gòu)體與共用體9.3師生信息統(tǒng)計(jì)9.3.3
共用體變量的初始化和引用在定義共用體變量的同時(shí),只能對(duì)其中的一個(gè)成員進(jìn)行初始化操作,這與它的內(nèi)存分配方式是對(duì)應(yīng)的。例如:union
data{
int
x;double
y;char
z;};union
data
d1={8};上述語(yǔ)句用于對(duì)data類型的共用體變量d1進(jìn)行初始化,并且只對(duì)成員x進(jìn)行了賦值操作。共用體變量成員的引用方法與結(jié)構(gòu)體變量成員的引用方法相同,其語(yǔ)法結(jié)構(gòu)是:共用體變量名.成員名項(xiàng)目9結(jié)構(gòu)體與共用體9.3師生信息統(tǒng)計(jì)【例9.5】編寫(xiě)程序引用共用體變量,程序如下。#include<stdio.h>union
data{
int
x;char
z;};int
main(
){
union
data
d1;d1.x=8;d1.z="a";printf("d1.x=%d\n",d1.x);printf("d1.z=%d\n",d1.z);}本例中,定義了一個(gè)data類型的共用體變量d1,它包含了int類型的成員x和char類型的成員z,最后引用變量d1的值時(shí),只能引用成員z的值,其他成員的值被覆蓋,無(wú)法得到初始值。另外,共用體在一般的編程中應(yīng)用較少,在單片機(jī)編程中應(yīng)用較多。項(xiàng)目9結(jié)構(gòu)體與共用體9.3師生信息統(tǒng)計(jì)項(xiàng)目小結(jié)本項(xiàng)目重點(diǎn)介紹了結(jié)構(gòu)體和共用體兩種構(gòu)造數(shù)據(jù)類型。任務(wù)9.1重點(diǎn)介紹了結(jié)構(gòu)體類型、結(jié)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鄉(xiāng)下土地承包合同(2篇)
- 2025年個(gè)人間借款合同(2篇)
- 2025年代理服裝合同(2篇)
- 專題01 利用導(dǎo)函數(shù)研究函數(shù)的切線問(wèn)題(典型題型歸類訓(xùn)練) 解析版
- 2025年產(chǎn)業(yè)基金戰(zhàn)略合作協(xié)議范文(2篇)
- 2025年五年級(jí)數(shù)學(xué)老師工作總結(jié)模版(二篇)
- 2025年二手車轉(zhuǎn)讓協(xié)議不過(guò)戶(2篇)
- 2025年臨時(shí)工安全生產(chǎn)協(xié)議(三篇)
- 快遞驛站裝修合同協(xié)議書(shū)
- 兒童樂(lè)園石膏吊頂裝修協(xié)議
- TCL任職資格體系資料HR
- 《中國(guó)古代寓言》導(dǎo)讀(課件)2023-2024學(xué)年統(tǒng)編版語(yǔ)文三年級(jí)下冊(cè)
- 五年級(jí)上冊(cè)計(jì)算題大全1000題帶答案
- 工會(huì)工作制度匯編
- 工程建設(shè)行業(yè)標(biāo)準(zhǔn)內(nèi)置保溫現(xiàn)澆混凝土復(fù)合剪力墻技術(shù)規(guī)程
- 液壓動(dòng)力元件-柱塞泵課件講解
- 人教版五年級(jí)上冊(cè)數(shù)學(xué)脫式計(jì)算100題及答案
- 屋面細(xì)石混凝土保護(hù)層施工方案及方法
- 2024年1月山西省高三年級(jí)適應(yīng)性調(diào)研測(cè)試(一模)理科綜合試卷(含答案)
- 2024年廣東高考(新課標(biāo)I卷)語(yǔ)文試題及參考答案
- XX衛(wèi)生院關(guān)于落實(shí)國(guó)家組織藥品集中采購(gòu)使用檢測(cè)和應(yīng)急預(yù)案及培訓(xùn)記錄
評(píng)論
0/150
提交評(píng)論