第7章 結(jié)構(gòu)體、共同體和枚舉類型_第1頁
第7章 結(jié)構(gòu)體、共同體和枚舉類型_第2頁
第7章 結(jié)構(gòu)體、共同體和枚舉類型_第3頁
第7章 結(jié)構(gòu)體、共同體和枚舉類型_第4頁
第7章 結(jié)構(gòu)體、共同體和枚舉類型_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C 語 言 程 序 設(shè) 計湖北民族學(xué)院信息工程學(xué)院 張 帆zhang_hbmy第7章 結(jié)構(gòu)體、共用體枚舉類型、typedef3第7章 結(jié)構(gòu)體、共用體和枚舉類型7.1結(jié)構(gòu)體7.2共用體7.3枚舉類型7.4typedef4 結(jié)構(gòu)體是一種構(gòu)造數(shù)據(jù)類型 用途:把不同類型的數(shù)據(jù)組合成一個整體 -自定義數(shù)據(jù)類型struct 結(jié)構(gòu)體名 類型1 成員名1; 類型2 成員名2; .;成員類型可以是基本型或構(gòu)造型struct是關(guān)鍵字,不能省略合法標識符可省:無名結(jié)構(gòu)體7.1.1結(jié)構(gòu)體類型聲明7.1 結(jié)構(gòu)體 結(jié)構(gòu)體類型聲明5例 struct student int num; char na

2、me20; char sex; int age; float score; ; 結(jié)構(gòu)體類型定義描述結(jié)構(gòu)的組織形式,不分配內(nèi)存struct student應(yīng)作為一個類型整體,num,name20等都只是其中的成員,且struct及“”后的“;”不能省略。7.1 結(jié)構(gòu)體6例住宿表 structaccommod charname20; /*姓名*/ charsex;/*性別*/ char job40; /*職業(yè)*/ int age; /*年齡*/ long number; /*身份證號碼*/;7.1 結(jié)構(gòu)體77.1.2結(jié)構(gòu)體變量的定義1.先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量一般形式: struct 結(jié)

3、構(gòu)體名 類型標識符 成員名; 類型標識符 成員名; .;struct 結(jié)構(gòu)體名 變量名表列;structstudent intnum; charname20; charsex; intage; floatscore;structstudentstudent1,student2;7.1 結(jié)構(gòu)體82.定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量 struct 結(jié)構(gòu)體名 類型標識符 成員名; 類型標識符 成員名; .變量名表列;例 struct student int num; char name20; char sex; int age; float score; student1,student2;7.1

4、 結(jié)構(gòu)體93.直接定義結(jié)構(gòu)體變量struct 類型標識符 成員名; 類型標識符 成員名; .變量名表列;例 struct intnum; charname20; charsex; intage; floatscore; student1,student2;用無名結(jié)構(gòu)體直接定義變量只能一次7.1 結(jié)構(gòu)體107.1.3結(jié)構(gòu)體變量的引用引用規(guī)則 結(jié)構(gòu)體變量不能整體引用,只能引用變量成員引用方式: 結(jié)構(gòu)體變量名.成員名如果結(jié)構(gòu)體變量類型相同,可以將一個結(jié)構(gòu)體變量賦值給另一個結(jié)構(gòu)體變量結(jié)構(gòu)體嵌套時逐級引用例;student2=student1; 例:stu1.birthday.day=23;stu1.b

5、irthday.month=8;stu1.birthday.year=2003;7.1 結(jié)構(gòu)體117.1.4結(jié)構(gòu)體變量的使用1、 結(jié)構(gòu)體變量的初始化與其他類型變量一樣,對結(jié)構(gòu)體變量也可以在定義時進行初始化賦值,但附在變量后面的一組數(shù)據(jù)須用花括號括起來,其順序應(yīng)與結(jié)構(gòu)體中的成員順序保持一致。例 struct student intnum; charname20; charsex; intage; floatscore; student1 =11301,Zhang San,F(xiàn),19,496.5;7.1 結(jié)構(gòu)體127.1 結(jié)構(gòu)體2、同一種類型的結(jié)構(gòu)體變量之間可直接賦值可以將一個結(jié)構(gòu)體變量作為一個整體

6、賦給另一個具有相同類型的結(jié)構(gòu)體變量。例:student2=student1;3、結(jié)構(gòu)體變量的輸入輸出不允許對結(jié)構(gòu)體變量進行整體的輸入輸出。如:scanf(%d,%s,%c,%d,%f,&student1);/*錯*/ printf(%d,%s,%c,%d,%f,student1); /*錯*/134. 對成員變量可以象普通變量一樣進行各種操作。 例: student1.num=11301; scanf(%s,&); student2.score=student2.score+1; printf(%f,student2.score);7.1 結(jié)構(gòu)體147.1 結(jié)構(gòu)體struct studenti

7、nt num;int age;float score;stu;void main() printf(Enter num,age,score:);scanf(%d,%d,%f,&stu.num,&stu.age,&stu.score);printf(num:%d,age:%d,score:%.1fn,stu.num,stu.age,stu.score);程序運行過程:Enter num,age,score:1001,19,98.5num:1001,age:19,score:98.5例:輸入一個學(xué)生的一組數(shù)據(jù),然后輸出。分析:用成員運算符引用結(jié)構(gòu)體成員。151.結(jié)構(gòu)體數(shù)組的定義形式一: struc

8、t student int num; char name20; char sex; int age; ;struct student stu2;形式二: struct student int num; char name20; char sex; int age; stu2;形式三: struct int num; char name20; char sex; int age; stu2;numnamesexagenumnamesexagestu0stu125B7.1.5結(jié)構(gòu)體數(shù)組7.1 結(jié)構(gòu)體16引用方式: 結(jié)構(gòu)體數(shù)組名下標.成員名 struct student int num; char

9、name20; char sex; int age; str3;stu1.age+;strcpy(,“ZhangSan”);2.結(jié)構(gòu)體數(shù)組元素的引用7.1 結(jié)構(gòu)體177.2共用體7.2.1共用體類型聲明構(gòu)造數(shù)據(jù)類型用途:使幾個不同類型的變量共占一段內(nèi)存(相互覆蓋)union 共用體類型名 類型1 成員名1; 類型2 成員名2; .;例 union data int i; char ch; float f; ;類型定義不分配內(nèi)存187.2.2共用體變量定義形式二: union data int i; char ch; float f; a,b;fchifchiab形式一: un

10、ion data int i; char ch; float f; ; union data a,b;形式三: union int i; char ch; float f; a,b;共用體變量分配內(nèi)存,長度=最長成員所占字節(jié)數(shù)共用體變量任何時刻只有一個成員存在7.2共用體197.2.3共用體變量的引用引用方式: 共用體變量名.成員名引用規(guī)則不能引用共用體變量,只能引用其成員共用體變量中起作用的成員是最后一次存放的成員可以用一個共用體變量為另一個共用體變量賦值共用體變量的地址和它的各個成員的地址相同共用體變量不能作函數(shù)參數(shù),函數(shù)的返回值也不能是共用體類型共用體類型和結(jié)構(gòu)體類型可以相互嵌套,共用體

11、中成員可以為數(shù)組,甚至還可以定義共用體數(shù)組7.2共用體207.3枚舉類型7.3.1枚舉類型的聲明枚舉數(shù)據(jù)類型,指這種類型變量的取值只能限于事前已經(jīng)一一列舉出來的值的范圍 enum 枚舉類型名 枚舉常量名1,枚舉常量名2. ;例 enum weekday sun, mon, tue, wed, thu, fri, sat; 217.3.2枚舉類型變量的定義形式二: enum weekday sun, mon, tue, wed, thu, fri, sat week1,week2 ; 形式一: enum weekday sun, mon, tue, wed, thu, fri, sat; enum weekday week1,week2;形式三: enum sun, mon, tue, wed, thu, fri, sat week1,week2 ; 7.3枚舉類型227.4用typedef定義類型typedef的概念功能:用自定義名字為已有數(shù)據(jù)類型命名 類型定義簡單形式: typedeftypename;例 typedef int INTEGER;例 typedef fl

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論