




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章結(jié)構(gòu)類型數(shù)據(jù)描述7.1結(jié)構(gòu)體7.2共用體7.3枚舉類型7.5位段結(jié)構(gòu)第7章結(jié)構(gòu)類型數(shù)據(jù)描述1.概述在實(shí)際應(yīng)用中,有時(shí)需要將一些有相互聯(lián)系而類型不同的數(shù)據(jù)組合成一個(gè)有機(jī)的整體,以便于引用。如學(xué)生學(xué)籍檔案中的學(xué)號(hào)、姓名、性別、年齡、成績(jī)、地址等數(shù)據(jù),對(duì)每個(gè)學(xué)生來(lái)說(shuō),除了其各項(xiàng)的值不同外,但sexscoreLiFunF這種多項(xiàng)組合又有內(nèi)在聯(lián)系的的數(shù)據(jù)稱為結(jié)構(gòu)體2.結(jié)構(gòu)體類型變量的定義1)結(jié)構(gòu)體類型的定義形式struct結(jié)構(gòu)體名{分量表};其中“分量表”中的分量也應(yīng)進(jìn)行類型說(shuō)明即:{intnum;charname[20]charsex:intage;分量描述floatscore;charaddr[30];由用戶定義的“結(jié)構(gòu)體類型”,可以同標(biāo)準(zhǔn)類型一樣作為定義變量的類型。相當(dāng)于PASCAL語(yǔ)言中的2)定義結(jié)構(gòu)體類型變量的方法①先定義結(jié)構(gòu)體類型再定義變量定義了結(jié)構(gòu)體類型structstudent后,可以用它定義變量。如:注:不能寫成structst1,st2;必須同時(shí)指定結(jié)構(gòu)體名。為了方便起見(jiàn),可以在程序開(kāi)頭定義符號(hào)常量進(jìn)行STUDENT{intnum;charname[20];floatscorecharaddr[30];如:structstudent{intnum;charname[20];intagefloatintagefloatscorestruct結(jié)構(gòu)體名}變量表birthday,則可按如下方式進(jìn)行定義:structdatemonth;day;};structstudentstructdate4.結(jié)構(gòu)體類型變量的引用引用結(jié)構(gòu)體變量應(yīng)遵守如下規(guī)則:1)結(jié)構(gòu)體變量中分量的引用方式結(jié)構(gòu)體變量名·分量名[●二級(jí)分量名…]2)結(jié)構(gòu)體變量的分量本身又屬于結(jié)構(gòu)體類型時(shí)只能對(duì)最低級(jí)分量進(jìn)行操作。如:;st1.birthday.day;引起警告錯(cuò)誤。3)不能將一個(gè)結(jié)構(gòu)體變量直接進(jìn)行輸入輸出,只能對(duì)結(jié)構(gòu)體變量的各分量進(jìn)行輸入輸出。4)分量和結(jié)構(gòu)體變量的地址均可以被引用錯(cuò)誤錯(cuò)誤例7.1structstudent{longintnum;charname[20];charsex;定義結(jié)構(gòu)體的同時(shí)定義charaddr[30];變量a并進(jìn)行初始化。}a={89031,"LiLin",'M',"123BeijingRoad"}:main(){printf("%ld,%s,%c,%s\n",a.num,,a.sex,a.addr);{structstudent可以將定義部分放在main函數(shù)中{longintnum;charname[20];charaddr[30];charaddr[30];}a={89031,"LiLin",'M',"123BeijingRoad"};union共用體名 {inti;charch;;說(shuō)明:雖然“共用體”與“結(jié)構(gòu)體”的定義形式相似,但①一個(gè)結(jié)構(gòu)體變量所需的存儲(chǔ)容量為每個(gè)分量所需存儲(chǔ)容量之和,而一個(gè)共用體變量所需的存儲(chǔ)容量為各個(gè)分量⑤共用體類型可以出現(xiàn)在結(jié)構(gòu)體類型定義中,也可以定義共用體類型數(shù)組,數(shù)組也可以作為共用體的分量。同樣,結(jié)構(gòu)體類型也可以出現(xiàn)在共用體類型定義中。⑥不能在定義共用體變量時(shí)對(duì)其初始化,也不能對(duì)共用體變量名賦值,更不能企圖引用共用體變量名去得到2.共用體變量的引用不能引用共用體變量,只能采用分量運(yùn)算符“。”引共用體變量的分量。與引用結(jié)構(gòu)體變量的方法是一致的。通常,在定義嵌套有共用體變量的結(jié)構(gòu)體變量時(shí),在其中附加一個(gè)類型標(biāo)志,以方便對(duì)共用體分量的操作。charch;floatf;doubled;}data;inttype}a;printf("%d\n",a.data.breakprintf("%d\n",a.datachbreakprintf("%d\n",a.data.f);break;printf("%d\n",a.data.break所謂“枚舉”是指變量的取值只限于所列舉出來(lái)的值的范圍內(nèi)。enumweekday{sun,mon,tue,wed,thu,fri,sat};enumweekdayworkday,weekend;enumweekday{sun,mon,tue,wed,thu,fri,sat}workday;①{}中的枚舉元素是常量而不是變量,也不代表什么實(shí)際的含義。②枚舉型變量workday,weekend的取值只限于{}中列舉的元素范圍內(nèi)。③{}中枚舉元素的值按其排列順序?yàn)?、1、2、…,可用于輸出。④枚舉值可按其定義時(shí)的順序號(hào)用作判斷比較。⑤不得直接將一個(gè)整數(shù)賦給一個(gè)枚舉變量。如:是不對(duì)的,因?yàn)樗鼈儾粚儆谕粩?shù)據(jù)類型。但可以進(jìn)行強(qiáng)制類型轉(zhuǎn)換賦值。如:workday=(enumweekday)2;甚至可以是表達(dá)式,如:workday=(enumweekday)(5-3);⑥可用如下定義改變枚舉元素中的序號(hào)值:則枚舉元素的序號(hào)值依次為:例7.2口袋中有若干個(gè)紅、黃、藍(lán)、白、黑五種顏色的球,試編程求出每次從口袋中取出三個(gè)不同顏色的球的可能取法,并輸出每種組合的三種顏色。了7.4用typedef定義類型名typedefstructp=(structstudent*)malloc(sizeof(structstudent));可以寫成:p=(REC*)malloc(sizeof(REC))則可用typedef定義:typedefintINTEGER;typedef定義即可:typedeflongINTEGER;7.5位段結(jié)構(gòu)&△①位運(yùn)算符中除“~”外,其余均為二目運(yùn)算符,即要求1)“按位與”運(yùn)算符&參加運(yùn)算的兩個(gè)運(yùn)算量之對(duì)應(yīng)位都為1,則該位的結(jié)果為1,否則為0。即:&&運(yùn)算符的用途:如果想將一個(gè)單元清零(全部二進(jìn)位為0),則只要找一個(gè)數(shù)的補(bǔ)碼的對(duì)應(yīng)位0與被清零數(shù)的對(duì)應(yīng)位1然后使兩者進(jìn)行&運(yùn)算。 2)"按位或"運(yùn)算符 即一個(gè)數(shù)與017進(jìn)行按位或運(yùn)算,就可將該數(shù)的低4位全置為1;與0377進(jìn)行按位或運(yùn)算,就可將該數(shù)的低8位全置為1。3)"異或"運(yùn)算符參加運(yùn)算的兩個(gè)運(yùn)算量的對(duì)應(yīng)位相同,則該位的結(jié) 運(yùn)算符的用途: 對(duì)應(yīng)原數(shù)的低4位均置為1原數(shù)的低4位被翻轉(zhuǎn)4)“取反”運(yùn)算符~~運(yùn)算是對(duì)一個(gè)二進(jìn)制數(shù)按位取反,即將0變?yōu)?,8位全1用377;16位全1用177777;32位全1用37777777777。5)左移運(yùn)算符<<<用來(lái)將一個(gè)數(shù)的各二進(jìn)制位全部左移若干位,并在a的值a的補(bǔ)碼a<<1<<運(yùn)算的最大用途是做乘法運(yùn)算。將乘以2"的冪運(yùn)算處理為左移n位。6)右移運(yùn)算符>>>>用來(lái)將一個(gè)數(shù)的各二進(jìn)制位全部右移若干位,移a為00001111,則a>>2為0000001111右移一位相當(dāng)于除以2,右移n位相當(dāng)于除以2"。為0(正數(shù)),則左邊移入0;如果原來(lái)符號(hào)位為1,左邊移入0的稱為"邏輯右移",移入1的稱為“算術(shù)右移”。例5.23取一個(gè)整數(shù)a從右端開(kāi)始的4~7位。main(){unsigneda,b,c,d;scanf("%o",&a);b=a>>4;b=a>>(m-n+1)C=~(~0<<4);c=~(~0<<n)d=b&c;printf("%o\n%o\n",a,d);}運(yùn)行情況例5.24循環(huán)移位。將a右循環(huán)移4位。printf("%o\n%o\n",a,此題為無(wú)符號(hào)數(shù)邏輯右移,若為有符號(hào)數(shù)則最高位移入13.位段有時(shí)存儲(chǔ)一個(gè)信息不必用一個(gè)或多個(gè)字節(jié),可以在一個(gè)字節(jié)中存放幾個(gè)信息。例如,"真”或“假"用1或0示,只需要1位就夠了。1)在一個(gè)字節(jié)中存放幾個(gè)數(shù)據(jù) 圖中:a、b、c、d分別占2位、6位、4位、4位。假定c原來(lái)的值為0,現(xiàn)要變?yōu)?2,則:①將數(shù)12左移4位,使1100成為右邊起第4~7位。②將data與12<<4按位或即可(設(shè)data中第4~7位原來(lái)為0)。若c的原值不為0,則應(yīng)先使c為0。方法如下:當(dāng)然也可以用:data=data&~(15<<4)來(lái)實(shí)現(xiàn),而data=data&~(15<<4)/(n&15)<<4n為賦給c的值2)位段位段是以位為單位定義長(zhǎng)度的結(jié)構(gòu)體類型中的成員。structpackeddata{unsigneda:2;unsignedb:6;unsignedc:4;a,b,c,d共占2個(gè)字節(jié)}unnedd:4;i占2個(gè)字節(jié)data.a=2;data.b=3;unsignedunsignedunsigned:unsigned在同一存儲(chǔ)單元c:3;在另一存儲(chǔ)單元③③可以定義無(wú)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 競(jìng)選的發(fā)言稿
- 對(duì)新任領(lǐng)導(dǎo)表態(tài)發(fā)言稿
- 教育學(xué)生的發(fā)言稿
- 新任支部書(shū)記發(fā)言稿
- 醫(yī)保特惠解析
- 星辰銀行創(chuàng)新演講
- 社團(tuán)活動(dòng)全解析
- 分享交流會(huì)發(fā)言稿
- 答謝會(huì)發(fā)言稿
- 04-第三節(jié) 海洋與人類
- 2023年山西省太原市迎澤區(qū)校園招考聘用教師筆試題庫(kù)含答案詳解
- 2023中職27 嬰幼兒保育 賽題 模塊三 嬰幼兒早期學(xué)習(xí)支持(賽項(xiàng)賽題)
- 湖北省丹江口市樊家灣礦區(qū)鈦磁鐵礦資源儲(chǔ)量核實(shí)報(bào)(截至2016年12月底)
- 教師師德和專業(yè)發(fā)展課件
- 服務(wù)器巡檢報(bào)告模版
- 【員工創(chuàng)新績(jī)效研究文獻(xiàn)綜述】
- 2023年高中生物新教材人教版(2023年)必修二全冊(cè)教案
- 【高考核心詞匯考前沖刺】介詞短語(yǔ)辨析+單選100題高考英語(yǔ)詞匯查漏補(bǔ)缺沖刺訓(xùn)練
- 夫妻吵架復(fù)合合同書(shū)
- 六年級(jí)上冊(cè)心理健康教育課件-健康上網(wǎng)快樂(lè)多 北師大版
- GB/T 23641-2018電氣用纖維增強(qiáng)不飽和聚酯模塑料(SMC/BMC)
評(píng)論
0/150
提交評(píng)論