共用體與枚舉類型.ppt_第1頁
共用體與枚舉類型.ppt_第2頁
共用體與枚舉類型.ppt_第3頁
共用體與枚舉類型.ppt_第4頁
共用體與枚舉類型.ppt_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第10章共用體與枚舉類型 10 1共用體類型與共用體變量union共用體類型名 成員說明列表 uniondata inti charch floatf 同定義結(jié)構(gòu)體類型一樣 共用體變量也有三種方式 1 先定義共用體類型 再定義共用體變量uniondata inti charch floatf uniondataa b c 2 在定義共用體類型的同時定義共用體類型變量uniondata inti charch floatf a b c 3 定義共用體類型時 省略共用體類型名 同時定義共用體類型變量union inti charch floatf a b c 10 2共用體變量的引用一個共用體變量不是同時存放多個成員的值 而只能存放其中的一個值 這就是最后賦給它的值 a i 278 a ch D a f 5 78 共用體變量中最后的值是5 78 也可以通過指針變量引用共用體變量中的成員 例 uniondata pt x pt f 共用體與結(jié)構(gòu)體的區(qū)別 1 共用體變量a所占的內(nèi)存單元的字節(jié)數(shù)不是3個成員的字節(jié)數(shù)之和 而是等于3個成員中最長字節(jié)的成員所占內(nèi)存空間的字節(jié)數(shù) 也就是說a的3個成員共享4個字節(jié)的內(nèi)存空間 2 變量a中不能同時存在3個成員 只是可以根據(jù)需要用a存放一個整型數(shù) 或存放一個字符數(shù)據(jù) 或存放一個浮點數(shù) 例如 a ch a a i 100 a f 3 14 3 可以對共用體變量進(jìn)行初始化 但在花括號中只能給出第一個成員的初值 unionmemo charch inti floatx y1 a unionun習(xí)題集P125 3 chars 10 longd 3 ua structstd charc 10 doubled inta unionunvb a 則printf d n sizeof structstd sizeof unionun 輸出的值為 unionpw習(xí)題集P124 3 inti charch 2 a voidmain a ch 0 13 a ch 1 0 printf d n a i voidmain 例10 1寫出執(zhí)行結(jié)果 unionexx inta b struct intc d lpp e 10 e b e a 20 e lpp c e a e b e lpp d e a e b printf d d n e lpp c e lpp d 10 4位運算與位段結(jié)構(gòu)位是指二進(jìn)制數(shù)的一位 其值為0或1 位段以位為單位定義結(jié)構(gòu)體 或共用體 中成員所占存儲空間的長度 含有位段的結(jié)構(gòu)體類型稱為位段結(jié)構(gòu) 10 4 1位運算位運算符主要有 按位 與 按位 或 按位 取反 按位 異或 右移 1 按位 與 運算規(guī)則為 0 0 0 0 1 0 1 0 0 1 1 1 5 3111110110000001100000011所以 5 3 3 2 按位 或 運算規(guī)則 0 0 0 0 1 1 1 0 1 1 1 1 5 310110000001111111011 5 3 5 3 按位 異或 運算規(guī)則 0 0 0 0 1 1 1 0 1 1 1 0 5 3111110110000001111111000 5 3 8 4 按位 取反 運算規(guī)則 0 1 1 0 70000011111111000 7 8 5 左移 3 2右邊 最低位 補(bǔ)0 相當(dāng)于乘2操作00000011000011003 2 12相當(dāng)于3x2x2 12 6 右移 移動對象為正數(shù)時 高位補(bǔ)0 為負(fù)數(shù)時 邏輯右移 高位補(bǔ)0 算術(shù)右移 高位補(bǔ)1 3 21111110111111111 3 2 1 10 4 2位段結(jié)構(gòu)位段結(jié)構(gòu)也是一種結(jié)構(gòu)體類型 只不過其中含有以位為單位定義存儲長度的整數(shù)類型位段成員 structbytedata unsigneda 2 unsigned 6 unsigned 0 unsignedb 10 inti data 無名位段 6位 位段b 10位 成員i 16位 2009 9 若有以下程序段intr 8 printf d n r 1 輸出結(jié)果是A 16B 8C 4D 2 C 2009 3 有以下程序 includemain inta 5 b 1 t t a 2 b printf d n t 程序運行后的輸出結(jié)果是A 21B 11C 6D 1 A 10 5枚舉類型枚舉定義的一般形式 enum枚舉類型名 標(biāo)識符1 標(biāo)識符2 標(biāo)識符n enumcolorname red yellow blue white black enumcolornamecolor 變量color是枚舉類型enumcolorname 它的值只能是red yellow blue white 或black 例如 下面的賦值合法 color red color white 下面是不合法 color green color orange 幾點說明 1 定義枚舉類型必須以enum開頭 2 在定義枚舉類型時花括號中的名字稱為枚舉元素或枚舉常量 命名規(guī)則與標(biāo)識符相同 僅是為了提高程序的可讀性才使用這些名字 3 枚舉元素不是變量 不能改變其值 下面是不對的 red 8 yellow 9 但枚舉元素作為常量 它們是有值的 從花括號的第一個元素開始 值分別是0 1 2 3 4 這是系統(tǒng)自動賦給的 可以輸出 例 printf d blue 輸出的值是2 但是枚舉類型不能寫成 enumcolorname 0 1 2 3 4 可以在定義類型時對枚舉常量初始化 enumcolorname red 3 yellow blue white 8 black 4 枚舉常量可以進(jìn)行比較 例 if color red printf red if color black printf itisnotblack if color white printf9 itisblack 它們是按所代表的整數(shù)進(jìn)行比較的 5 一個枚舉變量的值只能是這幾個枚舉常量之一 可以將枚舉常量賦給一個枚舉變量 但不能將一個整數(shù)賦給它 例 color black 正確 color 5 錯誤 6 枚舉常量不是字符串 不能用下面的方法輸出字符串 red printf s red 例 習(xí)題集P127 11 12 10 6類型定義前面介紹的結(jié)構(gòu)體 共用體 枚舉等類型定義或說明變量時要冠以表明數(shù)據(jù)類型的關(guān)鍵字 如struct union enum等 但C語言也提供用typedef定義類型 為類型命名的機(jī)制 1 簡單的名字替換typedefintINTEGER INTEGERx y 相當(dāng)于intx y 2 定義一個類型名代表一個結(jié)構(gòu)體類型typedefstruct longnum charname 20 floatscore STUDENT STUDENTstudent1 student2 p 3 定義數(shù)組類型例 typedefintCOUNT 20 COUNTa b 4 定義指針類型typedefchar STRING STRINGp1 p2 p 10 用typedef定義一個新類型名的方法如下 1 先按定義變量的方法寫出定義體 如chara 20 2 將變量名換成新類型名 charNAME 20 3 在最前面加上typedef 如typedefcharNAME 20 4 然后可以用新類型名定義變量 NAMEc d 例 typedefint P

溫馨提示

  • 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

提交評論