《c語言程序設(shè)計教學(xué)資料》第12章-結(jié)構(gòu)體和共同體_第1頁
《c語言程序設(shè)計教學(xué)資料》第12章-結(jié)構(gòu)體和共同體_第2頁
《c語言程序設(shè)計教學(xué)資料》第12章-結(jié)構(gòu)體和共同體_第3頁
《c語言程序設(shè)計教學(xué)資料》第12章-結(jié)構(gòu)體和共同體_第4頁
《c語言程序設(shè)計教學(xué)資料》第12章-結(jié)構(gòu)體和共同體_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第12章 結(jié)構(gòu)體和共用體1ppt課件主要內(nèi)容 定義結(jié)構(gòu)體類型變量的方法 結(jié)構(gòu)體變量的引用 結(jié)構(gòu)體變量的初始化 結(jié)構(gòu)體數(shù)組 指向結(jié)構(gòu)體類型數(shù)據(jù)的指針 共用體 用typedef定義類型2ppt課件為什么要定義結(jié)構(gòu)體類型在程序例如何表示一人(姓名、年齡、性別)想表示多個人呢?如何用計算機(jī)程序?qū)崿F(xiàn)下述表格的管理? 3ppt課件初始化4ppt課件5ppt課件優(yōu)點:結(jié)構(gòu)緊湊,方便管理,數(shù)據(jù)的相關(guān)性強,便于查找,賦值時只針對某個學(xué)生,局部的輸入錯誤不會影響全局和其他人信息6ppt課件結(jié)構(gòu)體和共用體C語言允許用戶根據(jù)具體問題利用已有的基本類型來構(gòu)造自己所需的數(shù)據(jù)類型數(shù)組、結(jié)構(gòu)體、共用體都數(shù)據(jù)構(gòu)造性數(shù)據(jù)類型結(jié)構(gòu)

2、體定義:由若干不同類型的數(shù)據(jù)項組成(不同類型數(shù)據(jù)的集合),構(gòu)成結(jié)構(gòu)體的各個數(shù)據(jù)項稱為結(jié)構(gòu)體成員共同體定義:由若干不同類型的數(shù)據(jù)項組成,構(gòu)成共同體的各個數(shù)據(jù)項稱為共同體成員 7ppt課件數(shù)組、結(jié)構(gòu)體、共同體比較數(shù)組:相同類型數(shù)據(jù)構(gòu)成,適合于對具有相同類型屬性的數(shù)據(jù)進(jìn)行批處理結(jié)構(gòu)體:將不同類型的數(shù)據(jù)組織到統(tǒng)一的名字下,適合于關(guān)系緊密、邏輯相關(guān)、具有相同或者不同屬性的數(shù)據(jù)進(jìn)行處理,適合于數(shù)據(jù)庫管理系統(tǒng)共同體:邏輯關(guān)系相關(guān)的不同類型數(shù)據(jù)集合,但數(shù)據(jù)成員是情形互斥的,每個時刻只有一個數(shù)據(jù)成員起作用。 8ppt課件struct 結(jié)構(gòu)體名 數(shù)據(jù)類型 成員1名字; 數(shù)據(jù)類型 成員2名字; 數(shù)據(jù)類型 成員n名字

3、;; 成員列表結(jié)構(gòu)體 定義結(jié)構(gòu)體第一步:聲明結(jié)構(gòu)體模板 格式: 如:struct student int num; char name20; char sex; int age; float score4; char addr30; ; 聲明結(jié)構(gòu)體模板的主要目的是利用已有的數(shù)據(jù)類型定義一個新的數(shù)據(jù)類型 結(jié)構(gòu)體模板只是聲明了一種數(shù)據(jù)類型,定義了數(shù)據(jù)的組織形式,并未聲明結(jié)構(gòu)體類型的變量9ppt課件 定義結(jié)構(gòu)體第二步:利用已經(jīng)定義好的結(jié)構(gòu)體數(shù)據(jù)類型定義結(jié)構(gòu)體變量 定義結(jié)構(gòu)體變量方式: (1)先聲明結(jié)構(gòu)體模板,在定義結(jié)構(gòu)體變量struct 結(jié)構(gòu)體名 結(jié)構(gòu)體成員變量的定義; 變量名1,變量名2,.,變量

4、名n;struct 結(jié)構(gòu)體名 成員列表 ;struct 結(jié)構(gòu)體名 變量名1,變量名2,.,變量名n;(2)在聲明結(jié)構(gòu)體模板的同時定義結(jié)構(gòu)體變量10ppt課件(3)在直接定義結(jié)構(gòu)體變量struct 結(jié)構(gòu)體成員變量的定義; 變量名1,變量名2,.,變量名n;此時不出現(xiàn)結(jié)構(gòu)體名11ppt課件方法二:struct student int number; char name20; char sex; int age; float score; stu1,stu2;方法一:struct student int number; char name20; char sex; int age; float sc

5、ore;struct student stu1,stut2;方法三:struct int number; char name20; char sex; int age; float score; stu1,stu2;12ppt課件說明:結(jié)構(gòu)體名(struct):用于標(biāo)識一種新的數(shù)據(jù)類型,即結(jié)構(gòu)體類型,可以省略。注意區(qū)分結(jié)構(gòu)體類型與基本數(shù)據(jù)類型的不同,它是復(fù)合數(shù)據(jù)類型。結(jié)構(gòu)體成員變量與普通變量的定義一樣,它還可以是結(jié)構(gòu)體變量。13ppt課件嵌套的結(jié)構(gòu)體numnamesexagebirthdayaddrmonthdayyearstruct Date int month; int day; int

6、year; ;struct Stu int num; char name20; char sex; int age; struct Date birthday; char addr30; ;14ppt課件用typedef定義數(shù)據(jù)類型 只是為一種已經(jīng)存在的類型(系統(tǒng)固有或者用戶自定義的數(shù)據(jù)類型)定義一個新名字而已,并未定義一個新的數(shù)據(jù)類型 例:typedef int integer;15ppt課件 typedef優(yōu)點之一:有利于程序的通用性和移植性,程序會依賴于硬件特性,用typedef類型就便于移植。例:用typedef來定義與平臺無關(guān)的類型。定義一個叫INTEGER的int類型,在目標(biāo)平臺一

7、上,它占4個字節(jié): typedef int INTEGER;在某些平臺下,int占2個字節(jié)。要使數(shù)據(jù)類型的取值范圍不變,只需要做如下定義: typedef long INTEGER;也就是說,當(dāng)跨平臺時,只要改下 typedef 本身就行,不用對其他源碼做任何修改。16ppt課件typedef與#define有相似之處 例如:typedef int COUNT; #define COUNT int 作用:都是用COUNT代表int。But, 它們二者是不同的。#define是在預(yù)編譯時處理的,它只能作簡單的字符串替換;typedef是在編譯時處理的。實際上它并不是作簡單的字符串替換,而是采用如

8、同定義變量的方法那樣來聲明一個類型。17ppt課件結(jié)構(gòu)體變量初始化100310121王剛M199172839082對字符數(shù)組類型結(jié)構(gòu)體成員進(jìn)行賦值時,必須使用字符串處理函數(shù)strcpy()18ppt課件結(jié)構(gòu)體變量的引用例: 當(dāng)出現(xiàn)結(jié)構(gòu)體嵌套時,必須以級聯(lián)方式訪問結(jié)構(gòu)體成員19ppt課件結(jié)構(gòu)體變量輸入輸出20ppt課件結(jié)構(gòu)體變量的地址是結(jié)構(gòu)體變量所占內(nèi)存空間的首地址,而結(jié)構(gòu)體成員的地址與結(jié)構(gòu)體成員在結(jié)構(gòu)體中所處的位置及該成員所占內(nèi)存空間的字節(jié)數(shù)相關(guān)21ppt課件在定義了結(jié)構(gòu)體變量以后,當(dāng)然可以引用這個變量。但應(yīng)遵守以下規(guī)則: (1)不能將一個結(jié)構(gòu)體變量作為一個整體進(jìn)行輸入和輸出。 例:print

9、f(“%d,%s,%c,%d,%fn”,stu1); (2)如果成員本身又屬一個結(jié)構(gòu)體類型,則要用若干個成員運算符,一級一級地找到最低的一級的成員。只能對最低級的成員進(jìn)行賦值或存取以及運算。 例: student1.birthday.month22ppt課件(3)對結(jié)構(gòu)體變量的成員可以像普通變量一樣進(jìn)行各種運算(根據(jù)其類型決定可以進(jìn)行的運算)。 例: stu2.score=stu1.score; sum=stu1.score+stu2.score; student1.age+; +student2.age;(4)可以引用結(jié)構(gòu)體變量成員的地址,也可以引用結(jié)構(gòu)體變量的地址。例:scanf(%d,&

10、stu1.num); (輸入stud1.num的值) printf(%p,&stu1); (輸出stud1的首地址)23ppt課件結(jié)構(gòu)體所占內(nèi)存的字節(jié)數(shù)24ppt課件多數(shù)計算機(jī)為了提高內(nèi)存的尋址效率,為特定的數(shù)據(jù)類型引入了特殊的內(nèi)對齊需求。不同的系統(tǒng)和編譯器,內(nèi)存對齊的方式不同,為了滿足處理器對齊的要求,可能會在較小的成員后加入補位,導(dǎo)致結(jié)構(gòu)體實際所占內(nèi)存的字節(jié)數(shù)比我們想象的多25ppt課件結(jié)構(gòu)體數(shù)組的定義和初始化26ppt課件27ppt課件28ppt課件結(jié)構(gòu)體指針的定義和初始化29ppt課件30ppt課件以下3種形式等價: 結(jié)構(gòu)體變量成員名(*)成員名 -成員名31ppt課件32ppt課件33ppt課件向函數(shù)傳遞結(jié)構(gòu)體 用結(jié)構(gòu)體指針或結(jié)構(gòu)體數(shù)組作為函數(shù)參數(shù),向函數(shù)傳遞結(jié)構(gòu)體的地址按值調(diào)用按地址調(diào)用34ppt課件結(jié)構(gòu)體變量作函數(shù)參數(shù)實現(xiàn)按值調(diào)用35ppt課件結(jié)構(gòu)體指針作函數(shù)參數(shù)36ppt課件從函數(shù)返回結(jié)構(gòu)體變量的值37ppt課件38ppt課件39ppt課

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論