版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第13章 編譯預(yù)處理和動(dòng)態(tài)存儲(chǔ)分配 13.1 宏定義(不帶參數(shù)的宏定義,帶參數(shù)的宏定義) n 1.編譯預(yù)處理就是對(duì)C源程序進(jìn)行編譯前,由編譯預(yù)處理程序?qū)︻A(yù)處理命令行進(jìn)行處理的過(guò)程。n 2.C語(yǔ)言中,凡是以#開(kāi)頭的行,都稱(chēng)為編譯預(yù)處理命令行。C語(yǔ)言中的編譯預(yù)處命令有:#define,#undef,#include,#if,#else,#elif,#endif,#ifdef,#ifndef,#line,#pragma,#error。這些預(yù)處理命令組成的預(yù)處理命令行必須在一行的開(kāi)頭以#號(hào)開(kāi)始,每行的未尾不得加;號(hào),以區(qū)別于C語(yǔ)句、定義和說(shuō)明語(yǔ)句。n3.不帶參數(shù)的宏定義:命令的一般形式為: #defi
2、ne 標(biāo)識(shí)符 字符串 定義中的標(biāo)識(shí)符為用戶(hù)定義的標(biāo)識(shí)符,稱(chēng)為宏名。在預(yù)編譯時(shí),C預(yù)編譯程序?qū)⒊霈F(xiàn)的宏名替換成字符串的內(nèi)容,這一過(guò)程也稱(chēng)為宏展開(kāi)。n4.帶參數(shù)的宏定義:命令的一般形式為 #define宏名(形式參數(shù)) 字符串 定義中的字符串應(yīng)包含括號(hào)中所指定的形式參數(shù)。注意宏名與括號(hào)之間不要加空格,否則就成為不帶參數(shù)的宏定義了。 n5.預(yù)編譯時(shí),遇到帶實(shí)參的宏名,則按命令行中指定的字符串從左到右進(jìn)行置換,原則是:遇到實(shí)參則以實(shí)參代替,非形參字符原樣保留,從而成展開(kāi)后的內(nèi)容。 13.2 “文件包含”處理 n1.文件包含的一般形式為: #include頭文件名 #include 頭文件名一般由C語(yǔ)言
3、提供,也可以是用戶(hù)自己編寫(xiě)的,頭文件通常用.h作為后綴。n 2.當(dāng)頭文件名用雙引號(hào)括起來(lái)時(shí),系統(tǒng)首先在使用此命令的文件所在的目錄中查找被包含的文件,找不到時(shí),再按系統(tǒng)指定的標(biāo)準(zhǔn)方式檢索其它目錄;當(dāng)頭文件名用尖括號(hào)括起來(lái)時(shí),則直接按系統(tǒng)指定的標(biāo)準(zhǔn)檢索方式查找被包含的文件。n 3.預(yù)編譯時(shí),將被包含文件的內(nèi)容全部復(fù)制到包含文件中,這就是文件包含處理。13.3 條件編譯 C語(yǔ)言中的條件編譯命令可對(duì)源程序代碼的各部分有選擇地進(jìn)行編譯。條件編譯主要有如下3種使用格式: 使用格式使用格式1: #ifdef標(biāo)識(shí)符 程序段1 #else 程序段2 #endif 使用格式使用格式2: #ifndef標(biāo)識(shí)符 程序
4、段1 #else 程序段2 #endif 使用格式使用格式3: #if表達(dá)式 程序段1 #else 程序段2 #endif 使用格式1表示如果已定義了“標(biāo)識(shí)符”,則編譯“程序段1”,否則編譯“程序段2”;使用格式2表示如沒(méi)有定義了“標(biāo)識(shí)符”,則編譯“程序段1”,否則編譯“程序段2”;使用格式3表示如“表達(dá)式”的值為“真”時(shí),則編譯“程序段1”,否則編譯“程序段2”。第14章 結(jié)構(gòu)體、共同體和用戶(hù)定義類(lèi)型 14.1 結(jié)構(gòu)體與共用體類(lèi)型數(shù)據(jù)的定義方法和引用方法 u 1.結(jié)構(gòu)體類(lèi)型數(shù)據(jù)的定義方法:可以采用下面三種方法來(lái)定義: (1)先定義結(jié)構(gòu)體類(lèi)型再定義變量名 先定義一個(gè)結(jié)構(gòu)體類(lèi)型,一般形式為: s
5、truct 結(jié)構(gòu)體名 成員列表; (2)在定義類(lèi)型的同時(shí)定義變量:一般形式為: struct 結(jié)構(gòu)體名 成員列表 變量名列表; (3)直接定義結(jié)構(gòu)類(lèi)型變量:一般形式: struct 成員列表 變量名列表; 即不出現(xiàn)結(jié)構(gòu)體名。u 2.結(jié)構(gòu)體類(lèi)型變量的引用:在定義了結(jié)構(gòu)體變量后,可以采用下列方法引用結(jié)構(gòu)體類(lèi)型的變量: 結(jié)構(gòu)體變量名.成員名 這里.是成員(分量)運(yùn)算符,它在所有的運(yùn)算符中優(yōu)先級(jí)最高。u3.共用體類(lèi)型變量的定義形式為: union共用體名 成員列表 變量列表;u4.共用體變量的引用:可以用下面的形式引用共用體變量: 共用體變量名.成員名14.2 用指針和結(jié)構(gòu)體構(gòu)成鏈表,單向鏈表的建立、
6、輸出、刪除與插入 n 1.鏈表是一種常用的重要的數(shù)據(jù)結(jié)構(gòu),它是動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配的一種結(jié)構(gòu)。n 2.所謂建立鏈表是指從無(wú)到有地建立起一個(gè)鏈表,即一個(gè)一個(gè)地輸入各結(jié)點(diǎn)數(shù)據(jù),并建立起前后相鏈的關(guān)系。n 3.所謂輸出鏈表就是將鏈表各結(jié)點(diǎn)的數(shù)據(jù)依次輸出。n 4.所謂刪除鏈表事實(shí)上就是刪除鏈表中的某個(gè)結(jié)點(diǎn)。n 5.所謂插入鏈表就是在鏈表中某個(gè)位置插入一個(gè)或幾個(gè)結(jié)點(diǎn)。第15章 位 運(yùn) 算 15.1 位運(yùn)算的含義及應(yīng)用 n 1.位的概念 大多數(shù)計(jì)算機(jī)系統(tǒng)的內(nèi)存儲(chǔ)器是由眾多的存儲(chǔ)單元構(gòu)成的。在微機(jī)中,每個(gè)存儲(chǔ)單元是1個(gè)字節(jié),它由8位二進(jìn)制數(shù)構(gòu)成,可以表示28=256種信息,各位的編號(hào)從07,最左邊的位(第7位
7、)是最高位,最右邊的位(第0位)是最低位。由于二進(jìn)制本身的特點(diǎn),各位上的數(shù)字不是1,就是0。 本章中的位就是指上述提到的二進(jìn)制位,本章中的位運(yùn)算就是指對(duì)這些二進(jìn)制的位進(jìn)行邏輯運(yùn)算、移位運(yùn)算等操作。2.數(shù)的編碼 數(shù)在計(jì)算機(jī)中是以二進(jìn)制表示的,但是它并不是簡(jiǎn)單地以它本身的數(shù)值的二進(jìn)制形式來(lái)直接表示,而要進(jìn)行一定的編碼,以方便計(jì)算機(jī)進(jìn)行處理。常用的編碼有原碼、反碼、補(bǔ)碼三種。3.真值與原碼 我們將一個(gè)十進(jìn)制數(shù)的二進(jìn)制表示稱(chēng)為這個(gè)十進(jìn)制數(shù)的真值,它代表了這個(gè)十進(jìn)制數(shù)本身的數(shù)值。 用真值表示的數(shù)只能是正數(shù),對(duì)于負(fù)數(shù),要用“一”號(hào)標(biāo)明,例如: -7的真值為-0000000000000111 這勢(shì)必造成用計(jì)
8、算機(jī)表示數(shù)時(shí)的不便,故引入了原碼表示法。 在原碼表示法中,最高位代表符號(hào)位,用“1”表示負(fù)數(shù),“0”表示正數(shù);余下的數(shù)位用來(lái)表示真值的絕對(duì)值。 數(shù)字零存在著兩種表示方法:+0與-0。 4.反碼 若采用反碼表示,則對(duì)應(yīng)的原碼應(yīng)按照以下方法進(jìn)行轉(zhuǎn)換: (1)如果真值為正,則它的反碼與原碼相同; (2)如果真值為負(fù),則反碼的符號(hào)位為1,其余各位就是對(duì)原碼取反(即原碼的1變?yōu)?,原碼的0變?yōu)?)。 5.補(bǔ)碼 (1)為什么要引入補(bǔ)碼 補(bǔ)碼具有許多獨(dú)特的優(yōu)點(diǎn):首先它可以變減法運(yùn)算為加法運(yùn)算,使得計(jì)算時(shí)步驟統(tǒng)一,速度提高;其次,在這種系統(tǒng)下的“0”只有惟一的一種表示方法,這就是現(xiàn)代的計(jì)算機(jī)系統(tǒng)中大多采用補(bǔ)碼
9、的原因。 (2)補(bǔ)碼的規(guī)定 正數(shù)的原碼、補(bǔ)碼、反碼均相同; 計(jì)算負(fù)數(shù)的補(bǔ)碼時(shí),先置符號(hào)位為1,再對(duì)剩余原碼的位數(shù)逐位取反,最后對(duì)整個(gè)數(shù)加1。 在微機(jī)上以8位二進(jìn)制數(shù)為一字節(jié)的存儲(chǔ)單元中采用補(bǔ)碼系統(tǒng),它可以存放的最小整數(shù)為-128,最大整數(shù)為+127。若采用兩個(gè)字節(jié)來(lái)表示一個(gè)整數(shù),則可表示的最小整數(shù)為-32768,最大整數(shù)為+32767。15.2 簡(jiǎn)單的位運(yùn)算 C語(yǔ)言提供了位(bit)運(yùn)算的功能,這使它像匯編語(yǔ)言一樣用來(lái)編寫(xiě)系統(tǒng)程序。位運(yùn)算符共有六種: 位運(yùn)算符位運(yùn)算符位運(yùn)算符含義位運(yùn)算符含義&位與位與位或位或位異或位異或位取反位取反位右移位右移 本節(jié)介紹前四種運(yùn)算,即位的邏輯運(yùn)算。 1
10、.按位與運(yùn)算 概念 “按位與”運(yùn)算符“&”是雙目運(yùn)算符,其功能是將參與運(yùn)算兩數(shù)的各對(duì)應(yīng)二進(jìn)位相與。只能對(duì)應(yīng)的兩個(gè)二進(jìn)位均為1時(shí),結(jié)果位才為1,否則為0。 “按位與”與運(yùn)算的特殊用途 .清零 如果想將一個(gè)存儲(chǔ)單元清零,即使其全部二進(jìn)位為0,可按這樣的方法計(jì)算: 找一個(gè)數(shù),它的補(bǔ)碼形式中各位的值符合如下條件:原來(lái)的數(shù)中為1的位,新數(shù)中相應(yīng)位為0(注意,并不要求原數(shù)為0的位上,新數(shù)相應(yīng)位為1,新數(shù)相應(yīng)位可以是0或1);對(duì)二者進(jìn)行&運(yùn)算。 .取一個(gè)數(shù)中某些字節(jié) 對(duì)于一個(gè)整數(shù)a(占2個(gè)字節(jié)),如要想得到其中的低字節(jié),只需將a與特定的一個(gè)數(shù)按位與即可。 要想將一個(gè)數(shù)的某一位保留下來(lái),可將該
11、數(shù)與一個(gè)特定的數(shù)進(jìn)行&處理。 2.按位或運(yùn)算 “按位或”運(yùn)算符“”是雙目運(yùn)算符,其功能是將參與運(yùn)算兩數(shù)的各對(duì)應(yīng)的二進(jìn)位相或。只要對(duì)應(yīng)的兩個(gè)二進(jìn)位有一個(gè)為1時(shí),結(jié)果位就為1。參與運(yùn)算的整數(shù)均以補(bǔ)碼出現(xiàn)。 3.按位異或運(yùn)算 概念 “按位異或”運(yùn)算符“”是雙目運(yùn)算符,其功能是將參與運(yùn)算兩數(shù)的各對(duì)應(yīng)位相異或,當(dāng)兩對(duì)應(yīng)的二進(jìn)位相異時(shí),結(jié)果為1,否則為0。參與運(yùn)算整數(shù)仍以補(bǔ)碼出現(xiàn)。 “異或”運(yùn)算的特殊應(yīng)用 .使特定位翻轉(zhuǎn) .與0相“異或”,保留原值。 .交換兩個(gè)值。 4.“取反”運(yùn)算 “”是一個(gè)一元運(yùn)算符,即它的運(yùn)算量只有一個(gè),用來(lái)對(duì)一個(gè)二進(jìn)制數(shù)按位取反,即將0變1,1變0。比如說(shuō),025就是對(duì)八
12、進(jìn)制數(shù)25(即二進(jìn)制數(shù)000000000010101)按位求反。15.3 移位運(yùn)算 n 1.移位運(yùn)算符 移位運(yùn)算是對(duì)操作數(shù)以二進(jìn)制位為單位進(jìn)行左移或右移。移位操作 運(yùn)算符 名 稱(chēng) 例 子 運(yùn)算功能 右移位 b3 b右移3位 左移位 c2 c左移2位 n2.左移運(yùn)算 左移運(yùn)算符“”是雙目運(yùn)算符,其功能把“”左邊的運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,由“”右邊的數(shù)指定移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)0。例如; a”是雙目運(yùn)算符,其功能是把“”左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位,“”右邊的數(shù)指定移動(dòng)的位數(shù)。例如: a=15,a2 表示把000001111右移為00000011(十進(jìn)制3)。應(yīng)該說(shuō)明的是,對(duì)
13、于有符號(hào)數(shù),在右移時(shí),符號(hào)位將隨同移動(dòng)。當(dāng)為正數(shù)時(shí),最高位補(bǔ)0;而為負(fù)數(shù)時(shí),符號(hào)位為1,最高位是補(bǔ)0或1取決于編譯系統(tǒng)的規(guī)定。Turbo C 規(guī)定補(bǔ)1。 右移運(yùn)算相當(dāng)于將運(yùn)算對(duì)象除2. 15.4 位賦值運(yùn)算 運(yùn)算符 名 稱(chēng) 例 子 等價(jià)于 &= 位與賦值 a&=b a=2&b = 位或賦值 a=b a=ab = 位異或賦值 a=b a=ab = 右移賦值 ab a=ab = 左移賦值 a=b a=a 位賦值運(yùn)算的過(guò)程為: (1)先對(duì)兩個(gè)操作數(shù)進(jìn)行位操作; (2)然后把結(jié)果賦予第一個(gè)操作數(shù),因此第一個(gè)操作數(shù)必須是變量。 位賦值運(yùn)算與算術(shù)賦值運(yùn)算相似,它們都統(tǒng)稱(chēng)復(fù)合賦值運(yùn)算。第16章 文 件 16.1 文件類(lèi)型指針(FILE類(lèi)型指針) C語(yǔ)言中的文件分緩沖型文件和非緩沖型文件兩種,此處只討論緩沖型文件。對(duì)于緩沖型文件,每個(gè)被使用的文件都在內(nèi)存中開(kāi)辟一個(gè)區(qū),用來(lái)存放文件的有關(guān)信息(如文件名字、文件狀態(tài)及文件當(dāng)前位置等)。這些信息保存在有關(guān)結(jié)構(gòu)體類(lèi)型的變量中。該結(jié)構(gòu)體類(lèi)型由系統(tǒng)定義,取名為FI
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉(cāng)庫(kù)擴(kuò)大補(bǔ)充協(xié)議書(shū)
- 第9課-2023-2024學(xué)年初中信息技術(shù)七年級(jí)上冊(cè)(人教版)-說(shuō)課稿-制作電子表格
- 變更扶養(yǎng)協(xié)議書(shū)
- 北京房屋租賃合同2008
- 防火應(yīng)急疏散演練幼兒園
- 天津市南開(kāi)區(qū)2024-2025學(xué)年高一上學(xué)期11月期中考試語(yǔ)文試題(含答案)
- 遼寧省錦州市某校2024-2025學(xué)年高二上學(xué)期期中質(zhì)量檢測(cè)英語(yǔ)試卷(無(wú)答案)
- 糖尿病的演講
- 《纖維繩索彎曲疲勞試驗(yàn)方法》
- 飼料級(jí)磷酸鹽相關(guān)項(xiàng)目投資計(jì)劃書(shū)范本
- 廣東省深圳市2023一2024學(xué)年三年級(jí)上學(xué)期科學(xué)期中核心素養(yǎng)提升試卷
- 人教版九年級(jí)道德與法治 上冊(cè) 第三單元《文明與家園》大單元整體教學(xué)設(shè)計(jì)
- 食堂副食品配送服務(wù)投標(biāo)方案(技術(shù)方案)
- (4.43)-在馬克思墓前的講話(huà)?cǎi)R克思主義基本原理
- 冬季混凝土施工現(xiàn)場(chǎng)測(cè)溫安排
- 神經(jīng)源性膀胱診療指南解讀課件
- 施工作業(yè)單位安全培訓(xùn)教育試題(含答案)
- 四年級(jí)下冊(cè)書(shū)法說(shuō)課稿-學(xué)習(xí)與運(yùn)用-蘇少版
- ABB 產(chǎn)品手冊(cè) OmniCore C30 手冊(cè)(中文)
- 深信服SCTP認(rèn)證考試復(fù)習(xí)題庫(kù)(濃縮300題)
- 醫(yī)院紀(jì)委辦運(yùn)用PDCA循環(huán)提高醫(yī)院重點(diǎn)領(lǐng)域監(jiān)督覆蓋率PDCA成果匯報(bào)
評(píng)論
0/150
提交評(píng)論