C++程序設(shè)計(jì)(第5章2011924)_第1頁
C++程序設(shè)計(jì)(第5章2011924)_第2頁
C++程序設(shè)計(jì)(第5章2011924)_第3頁
C++程序設(shè)計(jì)(第5章2011924)_第4頁
C++程序設(shè)計(jì)(第5章2011924)_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章

作用域及預(yù)處理5.1.1作用域1.作用域的概念作用域是變量在程序中可引用的區(qū)域。2.作用域的種類局部作用域文件作用域函數(shù)聲明〔原型〕作用域函數(shù)作用域類作用域3/11/20241局部作用域概念當(dāng)標(biāo)識(shí)符的聲明出現(xiàn)在有一對(duì)花括號(hào)括起來的一段程序〔塊〕內(nèi)時(shí),該標(biāo)識(shí)符的作用域是從變量聲明處開始,在塊結(jié)束處〔即塊的右花括號(hào)處〕為止,該作用域的范圍具有局部性。局部作用域又稱塊作用域。復(fù)合語句是一個(gè)塊。復(fù)合語句中定義的變量,作用域僅在該復(fù)合語句中。3/11/20242局部作用域例如【例5.1】

輸入兩數(shù),按從大到小的順序保存,并輸出結(jié)果。#include<iostream.h>voidmain(){inta,b; //具有函數(shù)域cout<<"輸入兩整數(shù):"<<endl;cin>>a>>b;cout<<“a="<<a<<'\t'<<"b="<<b<<endl;if(b>=a){ intt;//t具有塊作用域

t=a;a=b;b=t;//交換a,b的值}cout<<"a="<<a<<'\t'<<"b="<<b<<endl;//t已經(jīng)無效}3/11/202432.文件作用域文件作用域也稱全局作用域定義在所有函數(shù)之外的變量,具有文件作用域;作用域?yàn)閺亩x處到整個(gè)源文件結(jié)束文件中定義的全局變量和函數(shù)都具有文件作用域。如果某個(gè)文件中說明了具有文件作用域的變量,該文件又被另一個(gè)文件包含,那么該標(biāo)識(shí)符的作用域延伸到新的文件中。3/11/202443.函數(shù)聲明作用域在作函數(shù)聲明時(shí),其中的形參作用域只在聲明中,即作用域結(jié)束于右括號(hào)。正是由于形參不能被程序的其他地方引用,所以通常只要聲明形參個(gè)數(shù)和類型,形參名可省略。

3/11/20245函數(shù)作用域和類作用域4.函數(shù)作用域函數(shù)中定義的變量,包括形參和函數(shù)體中定義的局部變量,作用域都在該函數(shù)內(nèi),也稱作函數(shù)域。5.類作用域在介紹類和對(duì)象時(shí),可知類作用域是指類定義范圍〔包括類的聲明局部和相應(yīng)成員函數(shù)實(shí)現(xiàn)整個(gè)范圍〕。在該范圍內(nèi),類的成員函數(shù)對(duì)數(shù)據(jù)成員有無限訪問權(quán)限。3/11/20246作用域總結(jié)塊作用域:從塊內(nèi)變量定義開始到塊結(jié)束。文件作用域:從函數(shù)外變量定義開始到文件結(jié)束〔可用extern進(jìn)行擴(kuò)展〕。函數(shù)聲明作用域:函數(shù)聲明內(nèi)部有效。函數(shù)作用域:從函數(shù)開始到函數(shù)結(jié)束。3/11/202475.1.2局部變量與全局變量根據(jù)作用域的不同,程序中的變量分為:局部變量全局變量3/11/202481.局部變量在函數(shù)或者塊內(nèi)定義的變量局部變量?jī)H在定義它的函數(shù)或塊內(nèi)起作用,在這個(gè)范圍之外不能使用這些變量。局部變量的作用域也稱為塊作用域。例:floatf1(inta){intb,c;//局部變量a,b,c有效,局部變量m,n無效……}voidmain(){intn,m;//局部變量m,n有效,局部變量a,b,c無效……}3/11/202491.局部變量局部變量的特點(diǎn):局部變量在程序運(yùn)行到它所在的函數(shù)或塊時(shí)在棧中建立,該函數(shù)或塊塊執(zhí)行完畢局部變量占有的空間即被釋放。局部變量在定義時(shí)假設(shè)未初始化,其值為隨機(jī)數(shù)。程序中使用的絕大多數(shù)變量都是局部變量。3/11/2024102.全局變量特點(diǎn):全局變量是在函數(shù)外部定義的變量。全局變量的作用域從定義點(diǎn)開始直到文件的結(jié)束,具有文件作用域。全局變量在編譯時(shí)建立在全局?jǐn)?shù)據(jù)區(qū),在未給出初始化值時(shí)系統(tǒng)自動(dòng)初始化為0。全局變量說明于所有函數(shù)之外,可以為根源程序文件中位于該全局變量定義之后的所有函數(shù)共同使用。全局變量可以在各個(gè)函數(shù)之間建立數(shù)據(jù)傳輸通道,但濫用會(huì)破壞程序的模塊化結(jié)構(gòu)。3/11/2024112.全局變量如:intp=1,q=5; /*全局變量*/floatf1(inta){intb,c//局部變量a,b,c……}3/11/2024122.全局變量#include<iostream.h>#include<math.h>#include<iomanip.h>#include<stdlib.h>intmin;//全局變量minintfind(){ intmax,x; x=rand()%101+100;//產(chǎn)生一個(gè)[100,200]之間的隨機(jī)數(shù)x cout<<setw(4)<<x;max=x;min=x; //設(shè)定最大數(shù)和最小數(shù)for(inti=1;i<10;i++) { x=rand()%101+100; //再產(chǎn)生一個(gè)[100,200]之間的隨機(jī)數(shù)x cout<<setw(4)<<x; if(x>max)max=x;//假設(shè)新產(chǎn)生的隨機(jī)數(shù)大于最大數(shù),那么進(jìn)行替換if(x<min)min=x;//假設(shè)新產(chǎn)生的隨機(jī)數(shù)小于最小數(shù),那么進(jìn)行替換} returnmax;}voidmain(){intm=find(); cout<<endl<<"最大數(shù):"<<m<<",最小數(shù):"<<min<<endl;}【例5.2】編寫一個(gè)函數(shù)實(shí)現(xiàn)同時(shí)返回10個(gè)數(shù)的最大和最小值。分析:一個(gè)函數(shù)只能返回一個(gè)值,所以可以使用全局變量在函數(shù)之間傳遞另一個(gè)值。3/11/2024132.全局變量當(dāng)具有塊作用域的局部變量與具有文件作用域的全局變量同名時(shí),與局部變量同名的全局變量不起作用,即局部變量?jī)?yōu)先??梢酝ㄟ^“::”域運(yùn)算符訪問同名的全局變量?!纠?.3】全局變量和局部變量的同名使用例如。3/11/2024142.全局變量#include<iostream.h>intx; //定義全局變量voidfun1(intx) //函數(shù)func1()有一個(gè)名為x的參數(shù){ x++; cout<<"localvariablexis"<<x<<endl; cout<<"glocalvariablexis"<<::x<<endl;}voidfun2(){ intx; //函數(shù)func2()中定義了一個(gè)名為x的局部變量 x=5; cout<<"localvariablexis"<<x<<endl; cout<<"glocalvariablexis"<<::x<<endl;}voidfun3(){ x=5;//為全局變量x賦值

}voidmain(){ x=2; //在主函數(shù)中為全局變量x賦值 fun1(5);cout<<"main:"<<x<<endl; fun2();cout<<"main:"<<x<<endl; fun3(); cout<<"main:"<<x<<endl;}

運(yùn)行結(jié)果為:localvariablexis6glocalvariablexis2main:2localvariablexis5glocalvariablexis2main:2main:53/11/2024155.1.3動(dòng)態(tài)存儲(chǔ)方式與靜態(tài)存儲(chǔ)方式按照生存期的不同,可分為兩類:動(dòng)態(tài)變量靜態(tài)變量C++的存儲(chǔ)空間分為程序區(qū):存放可執(zhí)行程序的程序代碼;靜態(tài)存儲(chǔ)區(qū):存放靜態(tài)變量;動(dòng)態(tài)存儲(chǔ)區(qū)〔棧區(qū)〕:存放動(dòng)態(tài)變量;堆區(qū)〔詳見第7章動(dòng)態(tài)分配〕。13/11/2024161.動(dòng)態(tài)存儲(chǔ)方式在程序執(zhí)行過程中分配存儲(chǔ)空間的變量。它的生存期是定義動(dòng)態(tài)變量的函數(shù)運(yùn)行期。它對(duì)存儲(chǔ)空間的利用是動(dòng)態(tài)的。其初值是每次為動(dòng)態(tài)變量分配存儲(chǔ)空間后都要重新設(shè)置。3/11/2024172.靜態(tài)存儲(chǔ)方式在程序開始運(yùn)行前就分配存儲(chǔ)空間的變量。它的生存期就是整個(gè)程序的運(yùn)行期。在程序開始運(yùn)行前就為其分配相應(yīng)的存儲(chǔ)空間,在程序的整個(gè)運(yùn)行期間一直占用,直到結(jié)束。3/11/2024185.2變量的存儲(chǔ)類型

變量的存儲(chǔ)類型分為四種自動(dòng)類型〔auto〕存放器類型(register)靜態(tài)類型(static)外部類型(extern)。說明:自動(dòng)類型、存放器類型的變量屬于動(dòng)態(tài)變量;靜態(tài)類型、外部類型的變量屬于靜態(tài)變量。3/11/2024195.2.1自動(dòng)類型(auto)1.定義格式:auto類型變量名;2.特性:自動(dòng)變量是動(dòng)態(tài)局部變量,具有塊作用域,存放在動(dòng)態(tài)存儲(chǔ)區(qū)。定義時(shí)可加auto說明符,也可以省略,〔默認(rèn)是auto型〕系統(tǒng)以堆?!睸tack〕方式為auto變量分配內(nèi)存空間,在程序運(yùn)行完畢后,這個(gè)堆棧由系統(tǒng)進(jìn)行自動(dòng)的回收。3/11/2024205.2.1自動(dòng)類型(auto)【例5.5】使用自動(dòng)變量的例如。#include<iostream.h>voidmain(){intx=5,y=10;//自動(dòng)變量x,yfor(intk=1;k<=2;k++){autointm=0,n=0;//自動(dòng)變量m,nm=m+1;n=n+x+y;cout<<"m="<<m<<'\t'<<"n="<<n<<endl;} }運(yùn)行結(jié)果為:m=1n=15m=1n=153/11/2024215.2.2存放器類型〔register〕1.概念用存放器類型關(guān)鍵詞register說明的變量稱為存放器變量。2.定義格式register類型變量名;3.特性存放器變量是動(dòng)態(tài)局部變量,具有塊作用域,存放在CPU的存放器或動(dòng)態(tài)存儲(chǔ)區(qū);這樣可以提高存取速度,如果沒有存放在通用存放器中便按自動(dòng)變量處理。注意由于通用存放器的數(shù)量有限,存放器類型的變量不宜過多。變量的長(zhǎng)度應(yīng)與通用存放器的長(zhǎng)度相當(dāng)。一般為int型或者char型。要把一些使用頻率高的變量定義為存放器變量。3/11/2024225.2.2存放器類型〔register〕【例5.6】使用存放器變量的例如。#include<iostream.h>voidmain(){intx=5,y=10;for(intk=1;k<=2;k++){registerintm=0,n=0;//存放器變量m,nm=m+1;n=n+x+y;cout<<"m="<<m<<'\t'<<"n="<<n<<endl;} }運(yùn)行結(jié)果為:m=1n=15m=1n=153/11/2024235.2.3靜態(tài)類型〔static〕1.概念用靜態(tài)類型關(guān)鍵詞static說明的變量稱為靜態(tài)變量。2.定義格式static類型變量名;3.分類靜態(tài)局部變量靜態(tài)全局變量。4.說明在C++規(guī)定靜態(tài)局部變量有默認(rèn)值,默認(rèn)值分別為int型等于0,float型等于0.0,char型為空,靜態(tài)全部變量也是如此。而自動(dòng)類型和存放器類型變量沒有默認(rèn)值。。3/11/2024245.2.3靜態(tài)類型〔static〕〔1〕靜態(tài)局部變量1.概念定義在函數(shù)內(nèi)的靜態(tài)變量稱為靜態(tài)局部變量特點(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í)的值。3/11/2024255.2.3靜態(tài)類型〔static〕【例5.6】自動(dòng)變量與靜態(tài)局部變量的區(qū)別。#include<iostream.h>voidf(){intx=0;//初始化屢次,棧中分配、相當(dāng)于autointx=0;staticinty=3;//靜態(tài)局部變量,僅初始化一次,靜態(tài)區(qū)分配x=x+1;y=y+1;cout<<x<<'\t'<<y<<endl;}voidmain(){inti;for(i=0;i<3;i++)f();}運(yùn)行結(jié)果為:1415163/11/2024265.2.3靜態(tài)類型〔static〕【例5.7】用自動(dòng)變量與靜態(tài)局部變量求三個(gè)整數(shù)的和。

#include<iostream.h>voidf(intx,inty){intm=0;//自動(dòng)變量staticintn=0;//靜態(tài)局部變量,此處也可staticintn;m=m+x+y;n=n+x+y;cout<<"m="<<m<<'\t'<<"n="<<n<<endl;}voidmain(){inti=5,j=10,k;for(k=1;k<=3;k++)f(i,j);}運(yùn)行結(jié)果為:m=15 n=15m=15 n=30m=15 n=453/11/2024275.2.3靜態(tài)類型〔static〕〔2〕靜態(tài)全局變量1.定義全局變量時(shí)加說明符static,就成為為靜態(tài)全局變量靜態(tài)全局變量只能被定義它的文件所獨(dú)享。3/11/2024285.2.3靜態(tài)類型〔static〕2.靜態(tài)全局變量的特點(diǎn):與全局變量根本相同,其作用域是定義它的程序文件中,而不是整個(gè)程序中的所有文件。靜態(tài)全局變量屬于靜態(tài)存儲(chǔ)類別的變量,所以它在程序一開始運(yùn)行時(shí),就被分配固定的存儲(chǔ)單元,默認(rèn)初始化值為0。其生存期是整個(gè)程序運(yùn)行期間。使用靜態(tài)全局變量的好處是同一程序的兩個(gè)不同源程序文件中可以使用相同名稱的變量名,而互不干擾。3/11/2024295.2.3靜態(tài)類型〔static〕【例5.8】編寫一個(gè)含兩個(gè)源程序文件程序〔參見多文件程序5.4節(jié)〕。在file2.cpp文件中定義靜態(tài)全局變量n,在含有main函數(shù)的file1.cpp文件中又定義全局變量n,分析兩者是否有聯(lián)系?//file1.cpp#include<iostream.h>intn;voidfn();voidmain(){ n=20; cout<<n<<endl; fn();}//file2.cpp#include<iostream.h>//不能省略staticintn;//定義靜態(tài)全局變量n,如果改為extern結(jié)果?voidfn(){n=n+1;cout<<n<<endl;}運(yùn)行結(jié)果:2013/11/2024305.2.4外部類型〔extern〕1.概念用外部類型extern說明的全局變量稱為外部變量。2.定義格式:

extern類型

變量名;3.特點(diǎn)在由多個(gè)源程序文件組成的程序中,這些源程序文件之間通過外部類型的變量進(jìn)行溝通。在一個(gè)文件中定義的全局變量缺省為外部的,即其作用域可以延伸到程序的其他文件中。但其他文件如果要使用這個(gè)文件中定義的全局變量,必須在使用前用“extern”作外部聲明,外部聲明通常放在文件的開頭。3/11/2024315.2.4外部類型〔extern〕變量定義時(shí)編譯器為其分配存儲(chǔ)空間,而變量聲明指明該全局變量已在其他地方說明過,編譯系統(tǒng)不再分配存儲(chǔ)空間,直接使用變量定義時(shí)所分配的空間。靜態(tài)存儲(chǔ)〔static〕類型的作用域與外部〔extern〕存儲(chǔ)類型相反,一旦定義為靜態(tài)存儲(chǔ)類型,就限制該變量只能在定義它的文件中使用。【例5.9】將另一文件中的全局變量a,b定義為本文件外部變量的例如。第一個(gè)文件內(nèi)容如下:3/11/2024325.2.4外部類型〔extern〕/*文件名:exemple5_211.cpp*/inta=20,b=7;//全局變量a,bintmax(intx,inty){returnx>y?x:y;}

第二個(gè)文件內(nèi)容如下:/*文件名:exemple5_21.cpp*/#include<iostream.h>externinta,b;//外部變量a,bexternintmax(intx,inty);voidmain(){intc;c=max(a,b);cout<<"max="<<c<<endl;}3/11/2024335.2.4外部類型〔extern〕程序運(yùn)行結(jié)果如下:max=20由于在第二個(gè)文件聲明a,b為外部變量,所以在main函數(shù)中使用的a,b實(shí)際是在第一個(gè)文件中定義的a,b。故而輸出最大20。3/11/2024345.3編譯預(yù)處理〔extern〕概念:C++的預(yù)處理是編譯器在編譯源程序之前,先由預(yù)處理器處理預(yù)處理指令,由于在C++源程序中有各種編譯命令,而這些編譯命令由于它們是在程序被正常編譯之前執(zhí)行的,故稱為預(yù)處理命令〔或指令〕3/11/2024355.3編譯預(yù)處理

C++提供的預(yù)處理功能主要有以下3種:〔1〕宏定義命令〔2〕文件包含命令〔3〕條件編譯命令3/11/2024365.3.1宏定義

1.概念宏定義命令是將一個(gè)標(biāo)識(shí)符定義為一個(gè)字符串,該標(biāo)識(shí)符被稱為宏名,被定義的字符串稱為替換文本。宏定義命令有兩種格式:一種是簡(jiǎn)單的宏定義,另一種是帶參數(shù)的宏定義。2.宏定義的一般形式為:#define宏名

字符串說明:

define是宏替換的關(guān)鍵字,“宏名”是需要替換的標(biāo)識(shí)符,“字符串”是被指定用來替換的字符序列。如:#definePI3.14159263/11/2024375.3.1宏定義

說明:〔1〕#define、宏名和字符串之間一定要有空格?!?〕宏名一般用大寫字母表示,以區(qū)別于普通標(biāo)識(shí)符。〔3〕宏被定義以后,一般不能再重新定義。但可以用#undef來終止宏定義?!?〕一個(gè)定義過的宏名可以用來定義其他新的宏,但要注意其中的括號(hào)。如:#defineA20#defineB(A+10)3/11/2024385.3.1宏定義在C++中,雖然用宏定義可以定義符號(hào)常量,但常用const來定義符號(hào)常量例如:constdoublePI=3.1415926;#definePI3.14159265主要區(qū)別有:用const定義的符號(hào)具有一定的數(shù)據(jù)類型,而用#define命令僅產(chǎn)生文本替換,而不管數(shù)據(jù)類型和內(nèi)容是否正確。如:constdoublePI=3.1415926;//將PI定義為一個(gè)double型的常量3/11/2024395.3.1宏定義

2.有帶參數(shù)的宏定義如:#defineMAX(a,b)((a)>(b)?(a):(b))如果在程序中出現(xiàn)如下語句:S=MAX(4,6);那么被替換為:S=4>6?4:6;3/11/2024405.3.1宏定義3.內(nèi)聯(lián)函數(shù)與宏定義內(nèi)聯(lián)函數(shù)具有與#define宏定義相同的作用和相似的機(jī)理,但消除了#define的不平安因素。請(qǐng)比較下面的兩個(gè)例子。3/11/2024415.3.1宏定義【例5.10】使用帶參數(shù)的宏定義完成某個(gè)數(shù)乘2的功能#include<iostream.h>#definedoub(x)x*2intmain(){ for(inti=0;i<3;i++) cout<<i<<"doubledis:"<<doub(i)<<endl; cout<<"2+3doubledis:"<<doub(2+3)<<endl;return0;}運(yùn)行結(jié)果:0doubledis:01doubledis:22doubledis:42+3doubledis:83/11/2024425.3.2文件包含命令

1.概念所謂“文件包含”是指將另一個(gè)源文件的內(nèi)容合并到當(dāng)前程序中。2.文件包含命令的一般形式為:#include<文件名>或#include"文件名"3.說明文件名一般是以.h為擴(kuò)展名,因而稱它為“頭文件”文件包含的兩種格式區(qū)別在于:將文件名用“<>”括起來,用來包含那些由C++系統(tǒng)提供的并放在指定子目錄中頭文件;將文件名用雙引號(hào)括起來的,用來包含用戶自己定義的放在當(dāng)前目錄或其他目錄下的頭文件或其他源文件。3/11/2024435.3.2文件包含命令

3/11/2024445.3.2文件包含命令

注意:1.文件包含命令一般都被放在程序最前端,以便后面程序?qū)λ鼈兊囊谩?.一條#include命令只能包含一個(gè)文件,假設(shè)想包含多個(gè)文件,那么應(yīng)使用多條包含命令。例如:#include<iostream.h>#include<math.h>3/11/2024455.3.3條件編譯命令在C++中,常用的條件編譯命令有如下三種:〔1〕#ifdef標(biāo)識(shí)符 程序段1 #else 程序段2 #endif該條件編譯命令的功能是:如果在程序中#define中定義了指定的“標(biāo)識(shí)符”時(shí),就用程序段1參與編譯,否那么,用程序段2參與編譯。3/11/2024465.3.3條件編譯命令

〔2〕#ifndef標(biāo)識(shí)符 程序段1 #else 程序段2 #endif3/11/2024475.3.3條件編譯命令〔3〕#if常量表達(dá)式1 程序段1 #elif常量表達(dá)式2 程序段2 …… #elif常量表達(dá)式n 程序段n #else 程序段n+1 #endif該條件編譯命令的功能是:依次計(jì)算常量表達(dá)式的值,當(dāng)表達(dá)式的值為真時(shí),那么用相應(yīng)的程序段參與編譯,如果全部表達(dá)式的值都為假,那么用else后的程序段參與編譯。3/11/2024485.3.3條件編譯命令【例5.12】分析以下程序的結(jié)果。#include<iostream.h>#definek-5voidmain(){#ifk>0cout<<"a>0"<<endl;#elifk<0cout<<"a<0"<<endl;#elsecout<<"a=0"<<endl;#endif }運(yùn)行結(jié)果:a<0如果將#definek-5更改為#definek5;將會(huì)對(duì)程序的運(yùn)行結(jié)果會(huì)有什么影響?3/11/2024495.4程序的多文件組織

5.4程序的多文件組織5.4.1頭文件考慮標(biāo)識(shí)符在其他文件中的可見性。使用頭文件是很有效的方法。如:#include<iostream.h>其中的iostream.h是系統(tǒng)定義的一個(gè)文件,這種以“.h”命名的文件稱為頭文件,系統(tǒng)定義的頭文件中定義了一些常用的標(biāo)識(shí)符和函數(shù),用戶只要將頭文件包含進(jìn)自己的文件,就可使頭文件中定義的標(biāo)識(shí)符在用戶文件中變得可見,也就可以直接使用頭文件中定義的標(biāo)識(shí)符和函數(shù)。3/11/2024505.4.1頭文件除了系統(tǒng)定義的頭文件外,用戶還可以自定義頭文件。具體地說,頭文件中可以包括:用戶構(gòu)造的數(shù)據(jù)類型〔如枚舉類型〕,外部變量,函數(shù)聲明〔原型〕、常量等具有一定通用性或常用的量,而一般性的變量和函數(shù)定義不宜放在頭文件中。3/11/2024515.4.2多文件結(jié)構(gòu)在開發(fā)較大程序時(shí),通常將其分解為多個(gè)源程序文件,每個(gè)較小的程序用一個(gè)源程序文件建立。程序經(jīng)過建立、編譯、連接,成為一個(gè)完整的可執(zhí)行程序。多文件結(jié)構(gòu)通過工程進(jìn)行管理,在工程中建立假設(shè)干用戶定義的頭文件.h和源程序文件.cpp。頭文件中定義用戶自定義的數(shù)據(jù)類型,所有的程序?qū)崿F(xiàn)那么放在不同的源程序文件中。編譯時(shí)每個(gè)源程序文件單獨(dú)編譯,如果源程序文件中有編譯預(yù)處理指令,那么首先經(jīng)過編譯預(yù)處理生成臨時(shí)文件存放在內(nèi)存,之后對(duì)臨時(shí)文件進(jìn)行編譯生成目標(biāo)文件.obj,編譯后臨時(shí)文件撤銷。

3/11/2024525.4.2多文件結(jié)構(gòu)所有的目標(biāo)文件經(jīng)連接器連接最終生成一個(gè)完整的可執(zhí)行文件.exe。圖4-6是一個(gè)多文件系統(tǒng)的開發(fā)過程。圖4-6一個(gè)多文件系統(tǒng)的開

溫馨提示

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