第七章結(jié)構(gòu)體、共用體ppt課件_第1頁
第七章結(jié)構(gòu)體、共用體ppt課件_第2頁
第七章結(jié)構(gòu)體、共用體ppt課件_第3頁
第七章結(jié)構(gòu)體、共用體ppt課件_第4頁
第七章結(jié)構(gòu)體、共用體ppt課件_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、繼續(xù)繼續(xù)教學(xué)目的與要求 掌握結(jié)構(gòu)體和共用體類型說明、結(jié)構(gòu)體 和共用體變量的定義及初始化方法 掌握結(jié)構(gòu)體與共用體變量成員的引用前往前往重點(diǎn)與難點(diǎn)重點(diǎn): 結(jié)構(gòu)體的基本概念 結(jié)構(gòu)類型及變量的定義 共用體類型定義 共用體變量定義及引用難點(diǎn): 結(jié)構(gòu)體和共用體的引用繼續(xù)繼續(xù)結(jié) 構(gòu) 體 類 型 一個(gè)結(jié)構(gòu)體類型可由多個(gè)成員或稱為域的成分組成。與數(shù)組類型相比:相同點(diǎn):對(duì)于某個(gè)具體的結(jié)構(gòu)體類型,其成員的數(shù) 量必須固定。不同點(diǎn):結(jié)構(gòu)體中各個(gè)成員的類型可以相同也可以 不同,數(shù)組元素的類型必須完全相同;結(jié) 構(gòu)體類型有許許多多,而不是只有一種。繼續(xù)繼續(xù)結(jié) 構(gòu) 體 類 型 聲明一個(gè)結(jié)構(gòu)體類型的一般形式為: struct 結(jié)

2、構(gòu)體名 類型名 成員名表; 類型名 成員名表; ;留意: 1. 由于結(jié)構(gòu)體名可以由程序員任意取定,因此 定義結(jié)構(gòu)體變量的類型名不是唯一的,這一 點(diǎn)和標(biāo)準(zhǔn)類型名不同。一起構(gòu)成了類型名2. 最后的分號(hào)不能少。繼續(xù)繼續(xù)結(jié) 構(gòu) 體 類 型 假設(shè)程序中有如下數(shù)據(jù)結(jié)構(gòu),則用戶應(yīng)在程序中建立如下的結(jié)構(gòu)體:姓名(name)性別(sex)年齡(age)地址(addr) 工資(salary)ChengyiM18Wuhan2000.00 struct employee char name15; char sex; int age; char addr20; float salary; 繼續(xù)繼續(xù)結(jié) 構(gòu) 體 類 型 定

3、義結(jié)構(gòu)體類型的變量有3種方法。例如: struct employee char name15; char sex; int age; char addr20; float salary; a; (1先聲明結(jié)構(gòu)體類型,再定義變量名。例如:struct employee a; struct employee *p;(2在定義一個(gè)結(jié)構(gòu)體類型的同時(shí),定義結(jié)構(gòu)體變量。繼續(xù)繼續(xù)結(jié) 構(gòu) 體 類 型例如: struct char name15; char sex; int age; char addr20; float salary; a; (3不寫結(jié)構(gòu)體名而定義結(jié)構(gòu)體變量無名結(jié)構(gòu))。留意:由于沒有寫出結(jié)構(gòu)體

4、類型的名字,不能再用它 定義別的變量。繼續(xù)繼續(xù)結(jié) 構(gòu) 體 類 型例如: struct date int month; int day; int year; ; 在定義一個(gè)結(jié)構(gòu)體類型時(shí),可以嵌套另一個(gè)已定義的結(jié)構(gòu)體類型??梢栽诒硎韭毠せ厩闆r的結(jié)構(gòu)體類型中增加出生日期這一成員,即: struct employee char name15; char sex; struct date birthday; int age; char addr20; float salary; a; 繼續(xù)繼續(xù)結(jié) 構(gòu) 體 類 型例如: struct date int month; int day; int year;

5、; 在內(nèi)存中,結(jié)構(gòu)體變量占據(jù)一片連續(xù)的存儲(chǔ)單元。它占用的字節(jié)數(shù)是各個(gè)成員占用字節(jié)數(shù)的總和。可以用sizeof運(yùn)算符測(cè)出一個(gè)結(jié)構(gòu)體變量的長(zhǎng)度。那么sizeof(struct date)的值為6。闡明:(1C編譯程序時(shí),每個(gè)成員將依次取得對(duì)應(yīng)的初值。 (2若只給前面若干個(gè)成員賦初值,則對(duì)后面未賦值的 成員,如果是數(shù)值型,系統(tǒng)將自動(dòng)賦初值零;假設(shè) 是字符型,系統(tǒng)自動(dòng)賦初值NULL即0)。繼續(xù)繼續(xù)結(jié) 構(gòu) 體 類 型 例: struct employee char name15; char sex; int age; char addr20; float salary; a=“Chengyi”,M,18

6、,”Wuhan”,2000.00; 在定義結(jié)構(gòu)體變量的同時(shí),可直接將初值賦給結(jié)構(gòu)體變量中的各個(gè)成員。 具體有以下三種形式可以引用結(jié)構(gòu)體變量中的成員: (1結(jié)構(gòu)體變量名.成員名; (2指針變量名成員名; (3)(*指針變量名).成員名。稱為“成員運(yùn)算符”闡明:(1此處指針變量與結(jié)構(gòu)體變量是同一類型,并且已指向同類 型的變量。繼續(xù)繼續(xù)結(jié) 構(gòu) 體 類 型 在引用結(jié)構(gòu)體變量時(shí),有以下兩種情況:1. 引用結(jié)構(gòu)體變量中的一個(gè)成員稱為“結(jié)構(gòu)指向運(yùn)算符”(2在運(yùn)算符的優(yōu)先級(jí)中,圓點(diǎn)運(yùn)算符和箭頭運(yùn)算符屬于最高 級(jí)別的運(yùn)算符。(1若要引用結(jié)構(gòu)體類型變量stud中的score成員項(xiàng),可寫成如下方式:stud.sco

7、re pscore (*p).score(2如果一個(gè)結(jié)構(gòu)體類型中嵌套有另一個(gè)結(jié)構(gòu)體類型,則訪問內(nèi)嵌結(jié)構(gòu)體成員時(shí),應(yīng)采取逐級(jí)訪問的方式。 例如,stud.birthday.year繼續(xù)繼續(xù)結(jié) 構(gòu) 體 類 型 例: struct student char name15; int num; struct date birthday; float score; stud,*p; p=&stud; 設(shè)有定義:struct char name15; int num; stud1,stud2=“Chengyi”,01; stud1=stud2;留意: C不允許把一個(gè)結(jié)構(gòu)體變量作為一個(gè)整體進(jìn)行輸入和輸出。繼續(xù)

8、繼續(xù)結(jié) 構(gòu) 體 類 型2. 將一個(gè)結(jié)構(gòu)體變量作為一個(gè)整體賦給另一具有相同 類型的結(jié)構(gòu)體變量 例如:scanf(“%d”,&stud1); printf(“%dn”,stud1); 對(duì)于結(jié)構(gòu)體中的數(shù)據(jù)項(xiàng)必須逐個(gè)用相應(yīng)的格式符像普通變量一樣進(jìn)行輸入或輸出。前往前往結(jié) 構(gòu) 體 類 型2. 將一個(gè)結(jié)構(gòu)體變量作為一個(gè)整體賦給另一具有相同 類型的結(jié)構(gòu)體變量例如:scanf(“%s,%d”,,&stud1.num); printf(“%s,%dn”,,stud1.num);繼續(xù)繼續(xù)共 用 體 類 型 共用體數(shù)據(jù)類型是指把不同的數(shù)據(jù)項(xiàng)放置在同一段內(nèi)存存儲(chǔ)單元中的數(shù)據(jù)類型

9、。留意:結(jié)構(gòu)體變量中的成員各自占有自己的存儲(chǔ) 空間, 而共用體變量的所有成員都占有同 一段存儲(chǔ)空間。繼續(xù)繼續(xù)共 用 體 類 型 對(duì)共用體類型的說明及對(duì)共用體變量的定義同結(jié)構(gòu)體類型的說明、結(jié)構(gòu)體變量的定義相似。例如: union abc int i; float j; char ch; x,*p;關(guān)鍵字,是共用體類型的標(biāo)志。共用體標(biāo)識(shí)名,可以不出現(xiàn)。繼續(xù)繼續(xù)共 用 體 類 型對(duì)共用體變量的定義有三種方式:例如: union abc int i; float j; char ch; ; union abc x; union abc *p;(1先聲明共用體類型,再定義變量名。繼續(xù)繼續(xù)共 用 體 類

10、型例如: union abc int i; float j; char ch; x,*p;(2在定義共用體類型的同時(shí),定義共用體變量。繼續(xù)繼續(xù)共 用 體 類 型(3不寫共用體名而定義共用體變量無名結(jié)構(gòu))。例如:union int i; float j; char ch; x,*p;留意:由于沒有寫出共用體類型的名字,不能 再用它定義別的變量。繼續(xù)繼續(xù)共 用 體 類 型 共用體類型占用字節(jié)數(shù)同成員中具有最多字節(jié)數(shù)的那個(gè)成員的大小相同;結(jié)構(gòu)體類型占用字節(jié)數(shù)是各個(gè)成員字節(jié)數(shù)之和。例如:union un int i; double y; ; struct st char a10; union un b; ; printf(“%dn”,sizeof(struct st);繼續(xù)繼續(xù)共 用 體 類 型1. 共用體變量中成員的引用 對(duì)共用體變量中成員的引用,其形式與結(jié)構(gòu)體變量一樣,可使用以下三種方式之一:(1共用體變量名.成員名;(2指針變量名成員名;(3)(*指針變量名).成員名。繼續(xù)繼續(xù)共 用 體 類 型1. 共用體變量中成員的引用例如:union int i; float j; char ch; x,*p; p=&x;則x. i, x. j, pi, (*p). j等都是合法的引用形式。留意:不能只引用共

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論