c語言-第9章 共用和枚舉_第1頁
c語言-第9章 共用和枚舉_第2頁
c語言-第9章 共用和枚舉_第3頁
c語言-第9章 共用和枚舉_第4頁
c語言-第9章 共用和枚舉_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1一、本章需實(shí)現(xiàn)的系統(tǒng)功能二、枚舉類型2一、本章需實(shí)現(xiàn)的系統(tǒng)功能3學(xué)生成績記錄信息中沒有“性別屬性,如果需要在學(xué)生成績記錄信息中增加“性別屬性,如何表示“性別屬性?如何表示“一年的哪個(gè)季節(jié)”、“一周的星期幾等信息?解決思路:把要表示信息的可能取值一一列舉出來,即使用枚舉類型。4 修改學(xué)生成績記錄結(jié)構(gòu)類型,增加一個(gè)成員“性別”,修改相應(yīng)功能的程序代碼。 任務(wù)明確,全力以赴!任務(wù)明確,全力以赴!5二、枚舉類型6定義枚舉類型用enum開頭。其格式為:enum 枚舉類型名枚舉值表;枚舉值表中的各值稱為枚舉元素或枚舉常量,是用戶定義的標(biāo)識(shí)符。例如定義一個(gè)枚舉類型enum weekday可以是:enum

2、weekday sun,mon,tue,wed,thu,fri,sat;其中sun、mon、.、sat是枚舉元素。7枚舉類型變量定義格式為:enum 枚舉類型名 變量名;如:enum weekday workday,week_end;workday和week_end被定義為枚舉變量,其值只能是sunsat之中的某個(gè)值。例如:workday=mon;week_end=sun;是正確的。當(dāng)然,也可以直接定義枚舉變量,如: enum sun,mon,tue,wed,thu,fri,satworkday,week_end;8(1)枚舉元素是常量,不是變量,不能在程序中用賦值語句再對(duì)它賦值。例如對(duì)枚舉w

3、eekday的元素再作以下賦值: sun=5; mon=2; sun=mon; 都是錯(cuò)誤的。(2)枚舉元素本身由系統(tǒng)定義了一個(gè)表示序號(hào)的數(shù)值,從0 開始順序定義為0,1,2。如在weekday中,sun值為0,mon值為1, ,sat值為6。(3)只能把枚舉元素賦予枚舉變量,不能把元素的數(shù)值直接賦予枚舉變量。如:a=sum;b=mon; 是正確的。而a=0;b=1; 是錯(cuò)誤的。(4)枚舉類型定義時(shí)可以改變枚舉元素的值,如:enum weekday sun=7,mon=1,tue,wed,thu,fri,sat;枚舉元素sun為7,mon為1,以后順序加1,sat為6。9(5) 枚舉值可以用來作

4、判斷比較。如:if(workday=mon).if(workdaysun).枚舉值的比較規(guī)則是:按其在定義的順序號(hào)比較。如果定義時(shí)沒有人為指定,則第一個(gè)枚舉元素的值認(rèn)作0。故mon大于sun,而sat大于fri。 10#include void main()enum weekday sun,mon,tue,wed,thu,fri,sat;enum weekday a,b,c;a=sun;b=mon;c=tue;printf(%d,%d,%d,a,b,c);該段程序運(yùn)行的結(jié)果為:0,1,2共用類型共用類型&構(gòu)造數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型, ,也叫聯(lián)合體也叫聯(lián)合體&用處:使幾個(gè)不同類型的

5、變量共占一段內(nèi)存用處:使幾個(gè)不同類型的變量共占一段內(nèi)存( (相互覆蓋相互覆蓋) )&共用體類型定義共用體類型定義&定義形式:定義形式:union 共用體名共用體名 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 成員名;成員名; 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 成員名;成員名; .;例例 union data int i; char ch; float f; ;類型定義不分配內(nèi)存類型定義不分配內(nèi)存l 1. 1. 共用類型的定義共用類型的定義共用類型共用類型l 1. 1. 共用類型變量的定義共用類型變量的定義形式一形式一: : union data union data short i; short i; char

6、 ch; char ch; float f; float f; a,b,c; a,b,c;形式二形式二: : union data union data short i; short i; char ch; char ch; float f; float f; ; ;union data a,b,c;union data a,b,c;形式三形式三: : union union short i; short i; char ch; char ch; float f; float f; a,b,c; a,b,c;共用體變量定義分配內(nèi)存,長度=最長成員所占字節(jié)數(shù)共用體變量任何時(shí)刻只有一個(gè)成員存在i

7、ichchf f共用類型共用類型例例7.97.9一個(gè)利用共用類型的實(shí)例。一個(gè)利用共用類型的實(shí)例。 / /* *lt7_9.clt7_9.c* */ /#include #include union data /union data /* *定義共用類型定義共用類型* */ / short a;short a;long b;long b;double c;double c;char d;char d;y; /y; /* *定義共用類型變量定義共用類型變量y y* */ /struct stud /struct stud /* *定義結(jié)構(gòu)類型定義結(jié)構(gòu)類型* */ / short i;short i

8、;long j;long j;double k;double k;char m;char m;stu; /stu; /* *定義結(jié)構(gòu)類型變量定義結(jié)構(gòu)類型變量* */ /main()main() printf(%d,%d,sizeof(union printf(%d,%d,sizeof(union data),sizeof(struct stud);data),sizeof(struct stud);y.b=0 x12345678;y.b=0 x12345678;printf(n%x, %lx, y.a, y.b);printf(n%x, %lx, y.a, y.b); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:8

9、8,24245678,123456785678,123456787.2共用類型共用類型l 1. 1. 共用類型變量的定義共用類型變量的定義例例7.97.9解析:解析:程序在程序在VCVC中的運(yùn)行結(jié)果證明了例中的結(jié)構(gòu)類型的存儲(chǔ)空間中的運(yùn)行結(jié)果證明了例中的結(jié)構(gòu)類型的存儲(chǔ)空間2424)“大于其各成員字節(jié)數(shù)之和大于其各成員字節(jié)數(shù)之和1515);而共用類型的存儲(chǔ));而共用類型的存儲(chǔ)空間為其最長的成員所占的字節(jié)數(shù)空間為其最長的成員所占的字節(jié)數(shù)8 8)。)。例例7.97.9在在Turbo CTurbo C中運(yùn)行時(shí),其結(jié)構(gòu)類型大小為中運(yùn)行時(shí),其結(jié)構(gòu)類型大小為1515,這說明,這說明VCVC和和Turbo CT

10、urbo C對(duì)結(jié)構(gòu)體分配內(nèi)存的處理有差別,這種差別對(duì)編程對(duì)結(jié)構(gòu)體分配內(nèi)存的處理有差別,這種差別對(duì)編程一般不會(huì)構(gòu)成影響,讀者對(duì)這種差別有所了解即可。一般不會(huì)構(gòu)成影響,讀者對(duì)這種差別有所了解即可。共用類型共用類型引用方式:引用方式:例例 a.i=1; a.ch=a; a.f=1.5; printf(“%d”,a.i); (編譯通過,運(yùn)行結(jié)果不對(duì)編譯通過,運(yùn)行結(jié)果不對(duì)) 引用規(guī)則引用規(guī)則不能引用共用體變量,只能引用其成員不能引用共用體變量,只能引用其成員共用體指針名共用體指針名-成員名成員名共用體變量名共用體變量名.成員名成員名(*共用體指針名共用體指針名).成員名成員名union data int i; char ch; float f; ;union data a,b,c,*p,d3;a.i a.ch a.fp-i p-ch p-f(*p).i (*p).ch (*p).fd0.i d0.ch d0.f共用體變量中起作用的成員是最后一次存放的成員共用體變量中起作用的成員是最后一次存放的成員例例 union int i; char ch; float f; a; a=1; () 不能在定義共用體變量時(shí)初始化不能在定義共用體變量時(shí)初始化例例 union int i;

溫馨提示

  • 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)論