C語(yǔ)言-第八章-結(jié)構(gòu)體_第1頁(yè)
C語(yǔ)言-第八章-結(jié)構(gòu)體_第2頁(yè)
C語(yǔ)言-第八章-結(jié)構(gòu)體_第3頁(yè)
C語(yǔ)言-第八章-結(jié)構(gòu)體_第4頁(yè)
C語(yǔ)言-第八章-結(jié)構(gòu)體_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第八章結(jié)構(gòu)體、共同體和枚舉型根本12121類型結(jié)構(gòu)體、共同體、枚舉類型數(shù)據(jù)類型根本類型構(gòu)造類型指針類型空類型短整型〔short,unsignedshort〕根本整型〔int,unsigned〕整型實(shí)型字符型〔char〕枚舉類型〔enum〕長(zhǎng)整型〔long,unsignedlong〕單精度型〔float〕雙精度型〔double〕數(shù)組類型結(jié)構(gòu)體類型〔struct〕共用體類型〔union〕枚舉類型〔enum〕1結(jié)構(gòu)體類型結(jié)構(gòu)體類型1.什么是結(jié)構(gòu)體?第一,結(jié)構(gòu)體是一種數(shù)據(jù)類型,屬于構(gòu)造類型中的一種第二,結(jié)構(gòu)體是多個(gè)不同類型的數(shù)據(jù)的集合,構(gòu)成結(jié)構(gòu)體的每一個(gè)數(shù)據(jù)稱為成員項(xiàng)或叫域。2.結(jié)構(gòu)體類型的定義:一般形式:struct

結(jié)構(gòu)體類型名{

數(shù)據(jù)類型成員名1;//成員表

數(shù)據(jù)類型成員名2;……};結(jié)構(gòu)體類型2.結(jié)構(gòu)體類型的定義:說明:(1)struct是關(guān)鍵字,標(biāo)識(shí)一個(gè)結(jié)構(gòu)體類型定義的開頭(2)“結(jié)構(gòu)體類型名”是表示該結(jié)構(gòu)體類型的名稱的標(biāo)識(shí)符,可類比int、char(3)“成員表”是構(gòu)成結(jié)構(gòu)體類型的成份,由一個(gè)或多個(gè)成員構(gòu)成,每個(gè)成員有自己的成員名。各成員數(shù)據(jù)類型可以不同,既可以是根本數(shù)據(jù)類型,也可以是構(gòu)造類型〔結(jié)構(gòu)體和數(shù)組〕結(jié)構(gòu)體類型例:定義一個(gè)學(xué)生的結(jié)構(gòu)體類型structDATE{intyear;intmonth;intday;}//結(jié)構(gòu)體類型DATEstructstudent{//結(jié)構(gòu)體類型studentlongintnumber;//學(xué)號(hào)charname[8];//姓名intage;//年齡char*sex;//性別structDATEbirthday;//生日}注:結(jié)構(gòu)體類型可以嵌套定義,結(jié)構(gòu)體中的成員可以是其他結(jié)構(gòu)體類型結(jié)構(gòu)體類型2結(jié)構(gòu)體變量

結(jié)構(gòu)體變量1.結(jié)構(gòu)體變量的定義,共有三種方法,具體如下:

方法一:先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量

structDATE{intyear;intmonth;intday;};//定義結(jié)構(gòu)體類型DATEstructstudent{//定義結(jié)構(gòu)體類型studentlongintnumber;charname[8];intage;char*sex;structDATEbirthday;//DATE類型變量做student類型的成員};structstudentstu1,stu2;//定義結(jié)構(gòu)體變量stu1,stu2結(jié)構(gòu)體變量關(guān)鍵字typedef作用:為一個(gè)已經(jīng)定義的數(shù)據(jù)類型取一個(gè)別名例1.typedefintA;Aa=5;等價(jià)于inta=5;例2.structDATE{intyear;intmonth;intday;};//定義結(jié)構(gòu)體類型DATE

typedefstructstudent{//定義結(jié)構(gòu)體類型studentlongintnumber;charname[8];intage;char*sex;structDATEbirthday;//DATE類型變量做student類型的成員}stu;

stustu1,stu2;//定義結(jié)構(gòu)體變量stu1,stu2structDATE{intyear;intmonth;intday;};structstudent{longintnumber;charname[8];intage;char*sex;structDATEbirthday;}stu1,stu2;方法二:定義結(jié)構(gòu)體類型的同時(shí),定義結(jié)構(gòu)體變量結(jié)構(gòu)體變量

方法三:定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體變量,省略結(jié)構(gòu)體類型名structDATE{intyear;intmonth;intday;};struct{longintnumber;charname[8];intage;char*sex;structDATEbirthday;}stu1,stu2;結(jié)構(gòu)體變量2.結(jié)構(gòu)體變量的存儲(chǔ)在編譯時(shí),系統(tǒng)不對(duì)定義的結(jié)構(gòu)體類型分配內(nèi)存空間系統(tǒng)為定義的結(jié)構(gòu)體變量分配一段連續(xù)的內(nèi)存空間結(jié)構(gòu)體變量占用的內(nèi)存空間=結(jié)構(gòu)體各成員所占的內(nèi)存空間總和結(jié)構(gòu)體變量占內(nèi)存空間的檢測(cè):sizeof(structstudent)結(jié)構(gòu)體變量結(jié)構(gòu)體變量3.結(jié)構(gòu)體變量的初始化

一般形式:結(jié)構(gòu)體變量名={初值表}方法一:先定義類型,后定義變量同時(shí)給變量賦值structstudentstu1={120007,”張三”,21,”男”,1994,5,25};注:各個(gè)成員的初值必須與其類型保持一致,并且按順序放在花括號(hào)中,用逗號(hào)分隔。結(jié)構(gòu)體變量3.結(jié)構(gòu)體變量的初始化方法二:定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體變量并賦值structstudent{

longintnumber;…

}stu1={120007,”張三”,21,”男”,1994,5,25};3.結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量方法三:利用無(wú)結(jié)構(gòu)體類型名初始化結(jié)構(gòu)體變量struct{

longintnumber;…

}stu1={120007,”張三”,21,”男”,1994,5,25};結(jié)構(gòu)體變量4.結(jié)構(gòu)體變量的引用(1)結(jié)構(gòu)體變量的成員引用

引用方式:結(jié)構(gòu)體變量名.成員名注:”.”是成員運(yùn)算符,運(yùn)算符中級(jí)別最高

例:4.結(jié)構(gòu)體變量的引用結(jié)構(gòu)體變量(2)整個(gè)結(jié)構(gòu)體變量的引用

引用方式:相同類型結(jié)構(gòu)體變量可以整體賦值例:strutstudentstu1,stu2;stu1=stu2;3結(jié)構(gòu)體數(shù)組

結(jié)構(gòu)體數(shù)組1.結(jié)構(gòu)體數(shù)組定義

一般定義格式:struct結(jié)構(gòu)體類型名結(jié)構(gòu)體數(shù)組名[元素個(gè)數(shù)]

方法一:先定義結(jié)構(gòu)體,再定義結(jié)構(gòu)體數(shù)組

例:structstudent{longintnumber;charname[8];floatscore[2];};structstudentstud[3];結(jié)構(gòu)體數(shù)組1.結(jié)構(gòu)體數(shù)組定義

方法二:定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體數(shù)組

例:structstudent{longintnumber;charname[8];floatscore[2];}stud[3];

結(jié)構(gòu)體數(shù)組1.結(jié)構(gòu)體數(shù)組定義

方法三:利用無(wú)結(jié)構(gòu)體類型名定義結(jié)構(gòu)體數(shù)組

例:struct{longintnumber;charname[8];floatscore[2];}stud[3];

結(jié)構(gòu)體數(shù)組2.結(jié)構(gòu)體數(shù)組的初始化例:structstudent{longintnumber;charname[8];floatscore[2];}stud[3]={{230401,”李立”,{80,89}},{230402,”王平”,{79,87}},{230403,”趙宏”,{88,86}}};

注:定義結(jié)構(gòu)體數(shù)組時(shí)可以不指定元素的個(gè)數(shù),編譯時(shí),系統(tǒng)會(huì)根據(jù)初值表中結(jié)構(gòu)體常量的個(gè)數(shù)來(lái)確定數(shù)組元素的個(gè)數(shù)。結(jié)構(gòu)體數(shù)組3.結(jié)構(gòu)體數(shù)組的引用一個(gè)結(jié)構(gòu)體數(shù)組的元素相當(dāng)于一個(gè)結(jié)構(gòu)體變量。

例:structstudent{longintnumber;charname[8];floatscore[2];}stud[3];

引用方式:stud[i].numberstud[i].namestud[i].score[j]4結(jié)構(gòu)體指針

結(jié)構(gòu)體指針1.結(jié)構(gòu)體指針:指向一個(gè)結(jié)構(gòu)體變量的指針

定義方式:struct結(jié)構(gòu)體類型名*結(jié)構(gòu)體指針名

例:structstudent{//定義結(jié)構(gòu)體類型studentlongintnumber;charname[8];intage;char*sex;structDATEbirthday;}stu1;//定義結(jié)構(gòu)體變量stu1structstudent*sp;//定義結(jié)構(gòu)體類型指針sp結(jié)構(gòu)體指針2.結(jié)構(gòu)體指針變量賦值:sp=&stu1;3.指針訪問結(jié)構(gòu)體成員的一般形式:〔*結(jié)構(gòu)體指針變量〕.成員名例:(*sp).name結(jié)構(gòu)體指針變量->成員名例:sp->name注:”->”運(yùn)算符成為指向運(yùn)算符,其優(yōu)先級(jí)別最高,結(jié)合方向自左向右結(jié)構(gòu)體指針4.結(jié)構(gòu)體指針與結(jié)構(gòu)體數(shù)組

例:structcomplex{floatx;floaty;};structcomplexcomm[3],*cp;cp=comm;5結(jié)構(gòu)體與函數(shù)結(jié)構(gòu)體與函數(shù)1.結(jié)構(gòu)體變量作為函數(shù)參數(shù)結(jié)構(gòu)體變量作為函數(shù)參數(shù)時(shí),實(shí)參與形參間單項(xiàng)值傳遞,實(shí)參將各成員的值依次傳遞給形參變量成員

例:8.5

結(jié)構(gòu)體與函數(shù)2結(jié)構(gòu)體指針作為函數(shù)參數(shù)

結(jié)構(gòu)體指針作為函數(shù)參數(shù)時(shí),實(shí)參與形參間地址傳遞,將實(shí)參變量的地址傳遞給形參結(jié)構(gòu)體指針

例:8.6結(jié)構(gòu)體與函數(shù)3.函數(shù)的返回值為結(jié)構(gòu)體類型

例:structcomplex{floatx;floaty;};structcomplexintput(){structcomplexa;scanf(“%f”,a.x);scanf(“%f”,a.y);}returna;}main(){structcomplexs[2];for(inti=0;i<2;i++)s[i]=input();}

6共用體類型共用體1.什么是共用體?第一,共用體是一種數(shù)據(jù)類型

第二,共用體是多個(gè)不同類型的數(shù)據(jù)的集合,各成員項(xiàng)沒有獨(dú)立的內(nèi)存空間,而是共用一個(gè)內(nèi)存空間。共用體2.共用體類型定義一般形式:union聯(lián)合名{

數(shù)據(jù)類型成員名1;//成員表數(shù)據(jù)類型成員名2;};

例:uniondata{inti;floatf;};

注:union是關(guān)鍵字共用體3.共用體變量定義1〕先定義類型,再定義變量uniondata{inti;floatf;};uniondatanum;共用體3.共用體變量定義2〕在定義聯(lián)合類型的同時(shí)定義聯(lián)合變量uniondata{inti;floatf;}num;共用體3〕直接定義聯(lián)合變量union{inti;floatf;}num;說明:〔1〕共用體變量的所有成員占有同一段內(nèi)存,所占內(nèi)存空間是其成員中字節(jié)數(shù)最大的成員占有的字節(jié)數(shù)?!?〕共用體變量中可以定義許多不同類型的成員,但同一時(shí)刻只有一個(gè)成員的數(shù)據(jù)有效。共用體

4.共用體變量初始化初始化時(shí),只能對(duì)第一個(gè)成員的數(shù)據(jù)類型初始化。例:uniondatanum={10};正確

uniondatanum={10,25.4};錯(cuò)誤共用體5.共用體變量的引用引用形式:共用體變量名.成員名

(*共用體指針變量名).成員名共用體指針變量名->成員名例:p1427枚舉類型枚舉類型1.什么是枚舉?第一,枚舉是一種數(shù)據(jù)類型,結(jié)構(gòu)體變量的一種

第二,枚舉是將所有可能的值集合在一起形成的數(shù)據(jù)類型枚舉類型2.枚舉類型定義定義格式:enum

枚舉類型名{枚舉常量1,枚舉常量2,……,枚舉常量n};例:enumWEEKDAY{Sun,Mon,Tue,Wed,Thu,Fri,Sat};說明:enum是關(guān)鍵字

WEEKDAY是枚舉類型名稱

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論