




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、中原工學(xué)院 2022-3-61第第5章章 作用域及預(yù)處理作用域及預(yù)處理5.1.1 作用域作用域1.1.作用域的概念作用域的概念n作用域是變量在程序中可引用的區(qū)域。2.2.作用域的種類作用域的種類n局部作用域n文件作用域n函數(shù)聲明(原型)作用域n函數(shù)作用域n類作用域中原工學(xué)院 2022-3-62局部作用域局部作用域概念概念n當(dāng)標(biāo)識(shí)符的聲明出現(xiàn)在有一對(duì)花括號(hào)括起來的一段程序(塊)內(nèi)時(shí),該標(biāo)識(shí)符的作用域是從變量聲明處開始,在塊結(jié)束處(即塊的右花括號(hào)處)為止,該作用域的范圍具有局部性。局部作用域又稱塊作用域。n復(fù)合語句是一個(gè)塊。復(fù)合語句中定義的變量,作用域僅在該復(fù)合語句中。中原工學(xué)院 2022-3-6
2、3局部作用域示例局部作用域示例【例【例5.1】 輸入兩數(shù),按從大到小的順序保存,并輸出結(jié)果。輸入兩數(shù),按從大到小的順序保存,并輸出結(jié)果。#includevoid main() int a,b; /具有函數(shù)域 cout輸入兩整數(shù):ab; cout“a=atb=b=a)int t; / t具有塊作用域 t=a; a=b; b=t; /交換a,b的值 couta=atb=bendl; / t已經(jīng)無效中原工學(xué)院 2022-3-642文件作用域文件作用域n文件作用域也稱全局作用域n定義在所有函數(shù)之外的變量,具有文件作用域;n作用域?yàn)閺亩x處到整個(gè)源文件結(jié)束n文件中定義的全局變量和函數(shù)都具有文件作用域。n
3、如果某個(gè)文件中說明了具有文件作用域的變量,該文件又被另一個(gè)文件包含,則該標(biāo)識(shí)符的作用域延伸到新的文件中。中原工學(xué)院 2022-3-653函數(shù)聲明作用域函數(shù)聲明作用域 n在作函數(shù)聲明時(shí),其中的形參作用域只在聲明中,即作用域結(jié)束于右括號(hào)。n正是由于形參不能被程序的其他地方引用,所以通常只要聲明形參個(gè)數(shù)和類型,形參名可省略。 中原工學(xué)院 2022-3-66函數(shù)作用域和類作用域函數(shù)作用域和類作用域4函數(shù)作用域函數(shù)作用域n函數(shù)中定義的變量,包括形參和函數(shù)體中定義的局部變量,作用域都在該函數(shù)內(nèi),也稱作函數(shù)域。5類作用域類作用域n在介紹類和對(duì)象時(shí),可知類作用域是指類定義范圍(包括類的聲明部分和相應(yīng)成員函數(shù)實(shí)
4、現(xiàn)整個(gè)范圍)。在該范圍內(nèi),類的成員函數(shù)對(duì)數(shù)據(jù)成員有無限訪問權(quán)限。中原工學(xué)院 2022-3-67作用域作用域總結(jié)總結(jié)n塊作用域:從塊內(nèi)變量定義開始到塊結(jié)束。n文件作用域:從函數(shù)外變量定義開始到文件結(jié)束 (可用extern進(jìn)行擴(kuò)展)。n函數(shù)聲明作用域:函數(shù)聲明內(nèi)部有效。n函數(shù)作用域:從函數(shù)開始到函數(shù)結(jié)束。中原工學(xué)院 2022-3-685.1.2 局部變量與全局變量局部變量與全局變量根據(jù)作用域的不同,程序中的變量分為:根據(jù)作用域的不同,程序中的變量分為:n局部變量n全局變量中原工學(xué)院 2022-3-691局部變量局部變量n在函數(shù)或者塊內(nèi)定義的變量n局部變量?jī)H在定義它的函數(shù)或塊內(nèi)起作用,在這個(gè)范圍之外
5、不能使用這些變量。局部變量的作用域也稱為塊作用域。例:例: float f1(int a)int b,c; /局部變量a,b,c有效,局部變量m,n無效 void main( )int n,m; /局部變量m,n有效,局部變量a,b,c無效 中原工學(xué)院 2022-3-6101局部變量局部變量局部變量的特點(diǎn):局部變量的特點(diǎn):n局部變量在程序運(yùn)行到它所在的函數(shù)或塊時(shí)在棧中建立,該函數(shù)或塊塊執(zhí)行完畢局部變量占有的空間即被釋放。n局部變量在定義時(shí)若未初始化,其值為隨機(jī)數(shù)。程序中使用的絕大多數(shù)變量都是局部變量。中原工學(xué)院 2022-3-6112. 全局變量全局變量特點(diǎn)特點(diǎn):n全局變量是在函數(shù)外部定義的變
6、量。n全局變量的作用域從定義點(diǎn)開始直到文件的結(jié)束,具有文件作用域。 n全局變量在編譯時(shí)建立在全局?jǐn)?shù)據(jù)區(qū),在未給出初始化值時(shí)系統(tǒng)自動(dòng)初始化為0。n全局變量說明于所有函數(shù)之外,可以為本源程序文件中位于該全局變量定義之后的所有函數(shù)共同使用。全局變量可以在各個(gè)函數(shù)之間建立數(shù)據(jù)傳輸通道,但濫用會(huì)破壞程序的模塊化結(jié)構(gòu)。中原工學(xué)院 2022-3-6122. 全局變量全局變量如:int p=1, q=5; /*全局變量*/float f1(int a) int b,c /局部變量a,b,c 中原工學(xué)院 2022-3-6132. 全局變量全局變量#include #include #include #inclu
7、de int min; /全局變量全局變量minint find( )int max,x;x=rand( )%101+100; /產(chǎn)生一個(gè)產(chǎn)生一個(gè)100, 200之間的隨機(jī)數(shù)之間的隨機(jī)數(shù)xcoutsetw(4)x; max = x; min =x; / 設(shè)定最大數(shù)和最小數(shù)設(shè)定最大數(shù)和最小數(shù) for(int i=1;i10;i+)x=rand( )%101+100; /再產(chǎn)生一個(gè)再產(chǎn)生一個(gè)100, 200之間的隨機(jī)數(shù)之間的隨機(jī)數(shù)xcoutsetw(4) max)max = x; / 若新產(chǎn)生的隨機(jī)數(shù)大于最大數(shù),則進(jìn)行替換若新產(chǎn)生的隨機(jī)數(shù)大于最大數(shù),則進(jìn)行替換 if(x min)min = x;
8、/ 若新產(chǎn)生的隨機(jī)數(shù)小于最小數(shù),則進(jìn)行替換若新產(chǎn)生的隨機(jī)數(shù)小于最小數(shù),則進(jìn)行替換 return max;void main( ) int m=find( );coutendl最大數(shù):最大數(shù):m,最小數(shù)最小數(shù):minendl; 【例【例5.2】編寫一個(gè)函數(shù)實(shí)現(xiàn)同時(shí)返回】編寫一個(gè)函數(shù)實(shí)現(xiàn)同時(shí)返回10個(gè)數(shù)的最大和最小值。個(gè)數(shù)的最大和最小值。分析:一個(gè)函數(shù)只能返回一個(gè)值,所以可以使用全局變量在函數(shù)之間分析:一個(gè)函數(shù)只能返回一個(gè)值,所以可以使用全局變量在函數(shù)之間傳遞另一個(gè)值。傳遞另一個(gè)值。中原工學(xué)院 2022-3-6142. 全局變量全局變量n當(dāng)具有塊作用域的局部變量與具有文件作用域的全局變量同名時(shí),與
9、局部變量同名的全局變量不起作用,即局部變量?jī)?yōu)先。n可以通過“:”域運(yùn)算符訪問同名的全局變量?!纠纠?.3】全局變量和局部變量的同名使用示例?!咳肿兞亢途植孔兞康耐褂檬纠?。中原工學(xué)院 2022-3-6152 . 全局變量全局變量#include int x; / 定義全局變量定義全局變量void fun1(int x)/ 函數(shù)函數(shù)func1( )有一個(gè)名為有一個(gè)名為x的參數(shù)的參數(shù)x+;coutlocal variable x is xendl;coutglocal variable x is :xendl;void fun2( )int x;/ 函數(shù)函數(shù)func2( )中定義了一個(gè)名為中
10、定義了一個(gè)名為x的局部變量的局部變量x=5;coutlocal variable x is xendl;coutglocal variable x is :xendl;void fun3( )x=5; /為全局變量為全局變量x賦值賦值 void main( )x = 2;/ 在主函數(shù)中為全局變量在主函數(shù)中為全局變量x賦值賦值fun1(5); coutmain:xendl;fun2( ); coutmain:xendl;fun3( ); coutmain:xendl; 運(yùn)行結(jié)果為:運(yùn)行結(jié)果為:local variable x is 6glocal variable x is 2main:2loc
11、al variable x is 5glocal variable x is 2main:2main:5中原工學(xué)院 2022-3-6165.1.3 動(dòng)態(tài)存儲(chǔ)方式與靜態(tài)存儲(chǔ)方式n按照生存期的不同,可分為兩類:按照生存期的不同,可分為兩類:n動(dòng)態(tài)變量n靜態(tài)變量nC+的存儲(chǔ)空間分為的存儲(chǔ)空間分為n程序區(qū):存放可執(zhí)行程序的程序代碼;n靜態(tài)存儲(chǔ)區(qū):存放靜態(tài)變量;n動(dòng)態(tài)存儲(chǔ)區(qū)(棧區(qū)):存放動(dòng)態(tài)變量;n堆區(qū)(詳見第7章動(dòng)態(tài)分配)。1中原工學(xué)院 2022-3-6171動(dòng)態(tài)存儲(chǔ)方式n在程序執(zhí)行過程中分配存儲(chǔ)空間的變量。它的生存期是定義動(dòng)態(tài)變量的函數(shù)運(yùn)行期。它對(duì)存儲(chǔ)空間的利用是動(dòng)態(tài)的。其初值是每次為動(dòng)態(tài)變量分配存
12、儲(chǔ)空間后都要重新設(shè)置。中原工學(xué)院 2022-3-6182. 靜態(tài)存儲(chǔ)方式n在程序開始運(yùn)行前就分配存儲(chǔ)空間的變量。它的生存期就是整個(gè)程序的運(yùn)行期。在程序開始運(yùn)行前就為其分配相應(yīng)的存儲(chǔ)空間,在程序的整個(gè)運(yùn)行期間一直占用,直到結(jié)束。中原工學(xué)院 2022-3-6195.2 變量的存儲(chǔ)類型變量的存儲(chǔ)類型 n變量的存儲(chǔ)類型分為四種變量的存儲(chǔ)類型分為四種n自動(dòng)類型(auto)n寄存器類型(register)n靜態(tài)類型(static)n外部類型(extern)。n說明:說明:n自動(dòng)類型、寄存器類型的變量屬于動(dòng)態(tài)變量;靜態(tài)類型、外部類型的變量屬于靜態(tài)變量。 中原工學(xué)院 2022-3-6205.2.1 自動(dòng)類型自
13、動(dòng)類型(auto)1. 1. 定義格式:定義格式: auto 類型類型 變量名;變量名;2. 2. 特性:特性:n自動(dòng)變量是動(dòng)態(tài)局部變量,具有塊作用域,存放在動(dòng)態(tài)存儲(chǔ)區(qū)。n定義時(shí)可加auto說明符,也可以省略,(默認(rèn)是auto型)n系統(tǒng)以堆棧(Stack)方式為auto變量分配內(nèi)存空間,在程序運(yùn)行完畢后,這個(gè)堆棧由系統(tǒng)進(jìn)行自動(dòng)的回收。中原工學(xué)院 2022-3-6215.2.1 自動(dòng)類型自動(dòng)類型(auto)【例【例5 5.5】使用自動(dòng)變量的示例?!渴褂米詣?dòng)變量的示例。#include void main() int x=5,y=10; /自動(dòng)變量自動(dòng)變量x,y for (int k=1;k=2;
14、k+) auto int m=0,n=0; /自動(dòng)變量自動(dòng)變量m,n m=m+1; n=n+x+y; coutm=mtn=nendl; 運(yùn)行結(jié)果為:運(yùn)行結(jié)果為:m=1 n=15m=1 n=15 中原工學(xué)院 2022-3-6225.2. 2 寄存器類型( register ) n1. 1. 概念概念n用寄存器類型關(guān)鍵詞register說明的變量稱為寄存器變量。2. 2. 定義格式定義格式 register 類型 變量名;3. 3. 特性特性n寄存器變量是動(dòng)態(tài)局部變量,具有塊作用域,存放在CPU的寄存器或動(dòng)態(tài)存儲(chǔ)區(qū);這樣可以提高存取速度,如果沒有存放在通用寄存器中便按自動(dòng)變量處理。n注意注意n由于
15、通用寄存器的數(shù)量有限,寄存器類型的變量不宜過多。n變量的長(zhǎng)度應(yīng)與通用寄存器的長(zhǎng)度相當(dāng)。一般為int型或者char型。n要把一些使用頻率高的變量定義為寄存器變量。中原工學(xué)院 2022-3-6235.2. 2 寄存器類型(寄存器類型( register )【例【例5.6】使用寄存器變量的示例?!渴褂眉拇嫫髯兞康氖纠?include void main() int x=5,y=10; for (int k=1;k=2;k+) register int m=0,n=0; /寄存器變量寄存器變量m,n m=m+1; n=n+x+y; coutm=mtn=nendl; 運(yùn)行結(jié)果為:運(yùn)行結(jié)果為:m=1 n
16、=15m=1 n=15 中原工學(xué)院 2022-3-6245.2.3 靜態(tài)類型(靜態(tài)類型(static) 1.1.概念概念用靜態(tài)類型關(guān)鍵詞static說明的變量稱為靜態(tài)變量。2.2.定義格式定義格式 static 類型 變量名;3.3.分類分類n靜態(tài)局部變量n靜態(tài)全局變量。4.4.說明說明n在C+規(guī)定靜態(tài)局部變量有默認(rèn)值,默認(rèn)值分別為int型等于0,float型等于0.0,char型為空,靜態(tài)全部變量也是如此。而自動(dòng)類型和寄存器類型變量沒有默認(rèn)值。中原工學(xué)院 2022-3-6255.2.3 靜態(tài)類型(靜態(tài)類型(static)(1)靜態(tài)局部變量)靜態(tài)局部變量1.概念概念定義在函數(shù)內(nèi)的靜態(tài)變量稱為靜
17、態(tài)局部變量特點(diǎn):特點(diǎn): 靜態(tài)局部變量本身也是局部變量,具有局部變量的性質(zhì)。因此其作用域也是局限在定義它的本函數(shù)體內(nèi),當(dāng)離開本函數(shù)體,該變量就不再起作用,但其值還繼續(xù)保留。另一方面,靜態(tài)局部變量又是靜態(tài)存儲(chǔ)類別的變量,所以,在整個(gè)程序運(yùn)行開始就被分配固定的存儲(chǔ)單元(占用靜態(tài)存儲(chǔ)區(qū)),整個(gè)程序運(yùn)行期間不再被重新分配,所以其生存期是整個(gè)程序運(yùn)行期間。靜態(tài)局部變量的賦初值的時(shí)間在編譯階段,并不是每發(fā)生一次函數(shù)調(diào)用就賦一次初值。僅初始化一次,當(dāng)再次調(diào)用該函數(shù)時(shí),靜態(tài)局部變量保留上次調(diào)用函數(shù)時(shí)的值。中原工學(xué)院 2022-3-6265.2.3 靜態(tài)類型(靜態(tài)類型(static)【例【例5.6】自動(dòng)變量與靜態(tài)
18、局部變量的區(qū)別?!孔詣?dòng)變量與靜態(tài)局部變量的區(qū)別。#include void f( ) int x=0; /初始化多次,棧中分配、相當(dāng)于初始化多次,棧中分配、相當(dāng)于auto int x=0; static int y=3; /靜態(tài)局部變量,僅初始化一次,靜態(tài)區(qū)分配靜態(tài)局部變量,僅初始化一次,靜態(tài)區(qū)分配 x=x+1; y=y+1; coutxtyendl;void main( ) int i; for(i=0;i3;i+) f ( ); 運(yùn)行結(jié)果為:1 41 51 6中原工學(xué)院 2022-3-6275.2.3 靜態(tài)類型(靜態(tài)類型(static)【例【例5.7】用自動(dòng)變量與靜態(tài)局部變量求三個(gè)整數(shù)的和
19、?!坑米詣?dòng)變量與靜態(tài)局部變量求三個(gè)整數(shù)的和。 #include void f(int x,int y) int m=0; /自動(dòng)變量自動(dòng)變量 static int n=0; /靜態(tài)局部變量,此處也可靜態(tài)局部變量,此處也可static int n; m=m+x+y; n=n+x+y; coutm=mtn=nendl;void main( ) int i=5,j=10,k; for (k=1;k=3;k+) f(i,j);運(yùn)行結(jié)果為: m=15 n=15 m=15 n=30 m=15 n=45 中原工學(xué)院 2022-3-6285.2.3 靜態(tài)類型(靜態(tài)類型(static)(2)靜態(tài)全局變量)靜態(tài)全
20、局變量n1. 1. 定義定義n全局變量時(shí)加說明符static,就成為為靜態(tài)全局變量n靜態(tài)全局變量只能被定義它的文件所獨(dú)享。中原工學(xué)院 2022-3-6295.2.3 靜態(tài)類型(靜態(tài)類型(static)2. 2. 靜態(tài)全局變量的特點(diǎn):靜態(tài)全局變量的特點(diǎn):n與全局變量基本相同,其作用域是定義它的程序文件中,而不是整個(gè)程序中的所有文件。n靜態(tài)全局變量屬于靜態(tài)存儲(chǔ)類別的變量,所以它在程序一開始運(yùn)行時(shí),就被分配固定的存儲(chǔ)單元,默認(rèn)初始化值為0。其生存期是整個(gè)程序運(yùn)行期間。n使用靜態(tài)全局變量的好處是同一程序的兩個(gè)不同源程序文件中可以使用相同名稱的變量名,而互不干擾。中原工學(xué)院 2022-3-6305.2.
21、3 靜態(tài)類型(靜態(tài)類型(static)【例【例5.8】編寫一個(gè)含兩個(gè)源程序文件程序(參見多文件程序】編寫一個(gè)含兩個(gè)源程序文件程序(參見多文件程序5.4節(jié))。在節(jié))。在file2.cpp文件中定義靜態(tài)全局變量文件中定義靜態(tài)全局變量n,在含有,在含有main函函數(shù)的數(shù)的file1.cpp文件中又定義全局變量文件中又定義全局變量n,分析兩者是否有聯(lián)系?,分析兩者是否有聯(lián)系?/file1.cpp#includeint n;void fn();void main()n=20;coutnendl;fn();/file2.cpp#include /不能省略不能省略static int n; / 定義靜態(tài)全局
22、變量定義靜態(tài)全局變量n,如果改為,如果改為extern 結(jié)果?結(jié)果?void fn( ) n=n+1; coutny?x:y; 第二個(gè)文件內(nèi)容如下:/*文件名:exemple5_21.cpp*/#include extern int a,b; /外部變量a,bextern int max(int x,int y);void main( ) int c; c=max(a,b); coutmax=c(b)?(a):(b)如果在程序中出現(xiàn)如下語句:S=MAX(4,6);則被替換為: S=46?4:6;中原工學(xué)院 2022-3-6415.3.1 宏定義n3. 內(nèi)聯(lián)函數(shù)與宏定義內(nèi)聯(lián)函數(shù)與宏定義n內(nèi)聯(lián)函數(shù)
23、具有與#define宏定義相同的作用和相似的機(jī)理,但消除了#define的不安全因素。請(qǐng)比較下面的兩個(gè)例子。中原工學(xué)院 2022-3-6425.3.1 宏定義【例5.10】使用帶參數(shù)的宏定義完成某個(gè)數(shù)乘2的功能#include #define doub(x) x*2int main()for(int i=0;i3;i+) coutidoubled is:doub(i)endl;cout2+3 doubled is: doub(2+3)endl; return 0; 運(yùn)行結(jié)果:0 doubled is: 01 doubled is: 22 doubled is: 42+3 doubled is:
24、 8中原工學(xué)院 2022-3-6435.3.2 文件包含命令 1. 1. 概念概念 所謂“文件包含”是指將另一個(gè)源文件的內(nèi)容合并到當(dāng)前程序中。2. 2. 文件包含命令的一般形式為:文件包含命令的一般形式為:#include 或 #include 文件名3.3.說明說明n文件名一般是以.h為擴(kuò)展名,因而稱它為“頭文件”n文件包含的兩種格式區(qū)別在于:將文件名用“”括起來,用來包含那些由C+系統(tǒng)提供的并放在指定子目錄中頭文件;將文件名用雙引號(hào)括起來的,用來包含用戶自己定義的放在當(dāng)前目錄或其他目錄下的頭文件或其他源文件。中原工學(xué)院 2022-3-6445.3.2 文件包含命令 中原工學(xué)院 2022-3
25、-6455.3.2 文件包含命令 注意:注意:1文件包含命令一般都被放在程序最前端,以便后面程序?qū)λ鼈兊囊谩?一條#include命令只能包含一個(gè)文件,若想包含多個(gè)文件,則應(yīng)使用多條包含命令。例如: #include #include 中原工學(xué)院 2022-3-6465.3.3 條件編譯命令條件編譯命令在在C+中,常用的條件編譯命令有如下三種:中,常用的條件編譯命令有如下三種:(1)#ifdef 標(biāo)識(shí)符程序段1 #else程序段2 #endif該條件編譯命令的功能是:如果在程序中#define中定義了指定的“標(biāo)識(shí)符”時(shí),就用程序段1參與編譯,否則,用程序段2參與編譯。中原工學(xué)院 2022-3
26、-6475.3.3 條件編譯命令條件編譯命令(2)#ifndef 標(biāo)識(shí)符程序段1#else程序段2#endif中原工學(xué)院 2022-3-6485.3.3 條件編譯命令條件編譯命令(3)#if 常量表達(dá)式1程序段1 #elif常量表達(dá)式2程序段2 #elif常量表達(dá)式n程序段n #else程序段n+1 #endif該條件編譯命令的功能是:依次計(jì)算常量表達(dá)式的值,當(dāng)表達(dá)式的值該條件編譯命令的功能是:依次計(jì)算常量表達(dá)式的值,當(dāng)表達(dá)式的值為真時(shí),則用相應(yīng)的程序段參與編譯,如果全部表達(dá)式的值都為假,為真時(shí),則用相應(yīng)的程序段參與編譯,如果全部表達(dá)式的值都為假,則用則用else后的程序段參與編譯。后的程序段
27、參與編譯。中原工學(xué)院 2022-3-6495.3.3 條件編譯命令條件編譯命令【例【例5 5.12】分析下列程序的結(jié)果?!糠治鱿铝谐绦虻慕Y(jié)果。 #include #define k -5 void main( ) #if k0 cout0endl; #elif k0 couta0endl; #else couta=0endl; #endif 運(yùn)行結(jié)果:運(yùn)行結(jié)果:a0如果將如果將#define k -5更改為更改為 #define k 5;將會(huì)對(duì)程序的運(yùn)行結(jié)果會(huì)有什么影響?;將會(huì)對(duì)程序的運(yùn)行結(jié)果會(huì)有什么影響?中原工學(xué)院 2022-3-6505.4 程序的多文件組織程序的多文件組織5.4 程序的多
28、文件組織程序的多文件組織5.4.1 頭文件頭文件考慮標(biāo)識(shí)符在其他文件中的可見性。使用頭文件是很有效考慮標(biāo)識(shí)符在其他文件中的可見性。使用頭文件是很有效的方法。的方法。如:如:# include 其中的其中的iostream.h是系統(tǒng)定義的一個(gè)文件,這種以是系統(tǒng)定義的一個(gè)文件,這種以“.h”命命名的文件稱為頭文件,系統(tǒng)定義的頭文件中定義了一些名的文件稱為頭文件,系統(tǒng)定義的頭文件中定義了一些常用的標(biāo)識(shí)符和函數(shù),用戶只要將頭文件包含進(jìn)自己的常用的標(biāo)識(shí)符和函數(shù),用戶只要將頭文件包含進(jìn)自己的文件,就可使頭文件中定義的標(biāo)識(shí)符在用戶文件中變得文件,就可使頭文件中定義的標(biāo)識(shí)符在用戶文件中變得可見,也就可以直接使
29、用頭文件中定義的標(biāo)識(shí)符和函數(shù)??梢姡簿涂梢灾苯邮褂妙^文件中定義的標(biāo)識(shí)符和函數(shù)。中原工學(xué)院 2022-3-6515.4.1 頭文件頭文件除了系統(tǒng)定義的頭文件外,用戶還可以自定義頭文除了系統(tǒng)定義的頭文件外,用戶還可以自定義頭文件。具體地說,頭文件中可以包括:用戶構(gòu)造的件。具體地說,頭文件中可以包括:用戶構(gòu)造的數(shù)據(jù)類型(如枚舉類型),外部變量,函數(shù)聲明數(shù)據(jù)類型(如枚舉類型),外部變量,函數(shù)聲明(原型)、常量等具有一定通用性或常用的量,(原型)、常量等具有一定通用性或常用的量,而一般性的變量和函數(shù)定義不宜放在頭文件中。而一般性的變量和函數(shù)定義不宜放在頭文件中。中原工學(xué)院 2022-3-6525.4.
30、2 多文件結(jié)構(gòu)多文件結(jié)構(gòu)n在開發(fā)較大程序時(shí),通常將其分解為多個(gè)源程序文件,每個(gè)較小的程序用一個(gè)源程序文件建立。n程序經(jīng)過建立、編譯、連接,成為一個(gè)完整的可執(zhí)行程序。n多文件結(jié)構(gòu)通過工程進(jìn)行管理,在工程中建立若干用戶定義的頭文件.h和源程序文件.cpp。n頭文件中定義用戶自定義的數(shù)據(jù)類型,所有的程序?qū)崿F(xiàn)則放在不同的源程序文件中。n編譯時(shí)每個(gè)源程序文件單獨(dú)編譯,如果源程序文件中有編譯預(yù)處理指令,則首先經(jīng)過編譯預(yù)處理生成臨時(shí)文件存放在內(nèi)存,之后對(duì)臨時(shí)文件進(jìn)行編譯生成目標(biāo)文件.obj,編譯后臨時(shí)文件撤銷。 中原工學(xué)院 2022-3-6535.4.2 多文件結(jié)構(gòu)多文件結(jié)構(gòu)所有的目標(biāo)文件經(jīng)連接器連接最終生成一個(gè)完整的可執(zhí)行文件.exe。圖4-6是一個(gè)多文件系統(tǒng)的開發(fā)過程。圖4-6一個(gè)多文件系統(tǒng)的開發(fā)過程 中原工學(xué)院 2022-3-6545.4.3多文件結(jié)構(gòu)程序示例多文件結(jié)構(gòu)程序示例 【例【例5.13】程序采用多文件形式實(shí)現(xiàn)如下功能:】程序采用多文件形式實(shí)現(xiàn)如下功能:在兩個(gè)源程序文件中分別實(shí)現(xiàn)計(jì)算三角
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 品牌租賃合同范本
- 后補(bǔ)合同范本范文
- 合同范本 兩甲方
- 變更房屋合同范本
- 合伙合同范本在
- 吉利汽車訂購合同范本
- 加工洗沙合同范本
- 公司司機(jī)簡(jiǎn)易合同范例
- 合同范本購貨合
- 賣車合同范本
- 《心力衰竭護(hù)理》課件
- 2025江蘇連云港市贛榆城市建設(shè)發(fā)展集團(tuán)限公司招聘人員暫時(shí)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 內(nèi)保單位培訓(xùn)
- 客戶服務(wù)部崗位手冊(cè)
- 《田野調(diào)查方法》課件
- 健康體檢報(bào)告解讀頁課件
- 火電工程達(dá)標(biāo)投產(chǎn)考核標(biāo)準(zhǔn)(2024版)
- 項(xiàng)目合作分潤(rùn)合同范例
- 《信號(hào)工程施工》課件全套 穆中華 項(xiàng)目1-3 信號(hào)圖紙識(shí)讀、施工技能訓(xùn)練、信號(hào)聯(lián)鎖試驗(yàn)
- 2025年中國艾草行業(yè)市場(chǎng)現(xiàn)狀、發(fā)展概況、未來前景分析報(bào)告
- 高中 人音版 音樂鑒賞 第二單元《漢族民歌》課件
評(píng)論
0/150
提交評(píng)論