歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

吉大課件C程序結(jié)構(gòu).ppt

  • 資源ID:14113513       資源大?。?span id="luwnmso" class="font-tahoma">529.31KB        全文頁數(shù):69頁
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

吉大課件C程序結(jié)構(gòu).ppt

-1-,C+ProgrammingLanguage,Dr.ZhengXiaojuanAssociateProfessorSoftwareCollegeofNortheastNormalUniversityOctober.2008,-2-,第五章程序結(jié)構(gòu),-3-,本章內(nèi)容,作用域與可見性生存期局部對象和全局對象靜態(tài)成員友元常類型編譯預(yù)處理,-4-,類本身可被定義在三種作用域內(nèi):1.全局作用域。全局類,絕大多數(shù)的C+類是定義在該作用域中,我們在前面定義的所有類都是在全局作用域中。2.在另一個類的作用域中。嵌套類,即一個類包含在另一個類中。3.在一個塊的局部作用域中。局部類,該類完全被塊包含。,1作用域與可見性,-5-,2生存期,2.1靜態(tài)生存期1.定義:與程序的運(yùn)行期相同。靜態(tài)生存期的變量程序開始運(yùn)行就存在,直到程序運(yùn)行結(jié)束生存期結(jié)束。具有文件作用域的變量具有靜態(tài)生存期。2.語法聲明:static。例如,staticintk;3.分配空間:在固定的數(shù)據(jù)區(qū)域內(nèi)分配空間。4.初始化:如果具有靜態(tài)生存期的變量未初始化,則自動初始化為0。5.靜態(tài)變量種類:全局變量、靜態(tài)局部變量。,-6-,運(yùn)行時的存儲空間結(jié)構(gòu),目標(biāo)代碼空間,寄存器空間,靜態(tài)區(qū)空間,堆區(qū)空間棧區(qū)空間,最大地址,最小地址,-7-,2.2局部生存期1.定義:在塊作用域中聲明的變量具有局部生存期。此生存期誕生于聲明點(diǎn),而終止于其作用域的結(jié)束處。2.局部變量種類:具有局部生存期的變量,具有塊作用域。塊作用域內(nèi)靜態(tài)變量,具有靜態(tài)生存期。例如:voidmain()staticintk;/.,-8-,2.3動態(tài)生存期定義:由程序中特定的函數(shù)(malloc()和free()調(diào)用或由操作符(new和delete)創(chuàng)建和釋放。具有動態(tài)生存期的變量在內(nèi)存的堆區(qū)分配空間。,-9-,#includeclassClockprivate:intHour,Minute,Second;public:Clock()Hour=0;Minute=0;Second=0;,3局部對象和全局對象,-10-,voidSetTime(intNewH,intNewM,intNewS);voidShowTime();Clock();voidClock:SetTime(intNewH,intNewM,intNewS)Hour=NewH;Minute=NewM;Second=NewS;voidClock:ShowTime()cout<<Hour<<:<<Minute<<:<<Second<<endl;,-11-,ClockglobClock;voidmain()cout<<Firsttimeoutput:<<endl;globClock.ShowTime();globClock.SetTime(10,30,45);Clockmyclock(globClock);cout<<Secondtimeoutput:<<endl;myclock.ShowTime();,程序運(yùn)行結(jié)果為Firsttimeoutput:0:0:0Secondtimeoutput:10:30:45,-12-,#includeusingnamespacestd;inti;/文件作用域intmain()i=5;inti;/塊作用域i=7;cout<<i=<<i<<endl;/輸出7cout<<i=<<i;/輸出5return0;,作用域與可見性例,-13-,#includeusingnamespacestd;inti=5;/文件作用域intmain()cout<<i=<<i<<endl;return0;i具有靜態(tài)生存期,對象的生存期例,-14-,#includeusingnamespacestd;voidfun();intmain()fun();fun();voidfun()staticinta=1;inti=5;a+;i+;cout<<i=<<i<<,a=<<a<<endl;,運(yùn)行結(jié)果:i=6,a=2i=6,a=3i是動態(tài)生存期a是靜態(tài)生存期,對象的生存期例,-15-,#includeusingnamespacestd;inti=1;/i為全局變量,具有靜態(tài)生存期。intmain()staticinta;/靜態(tài)局部變量,有全局壽命,局部可見。intb=-10;/b,c為局部變量,具有動態(tài)生存期。intc=0;voidother(void);cout<<-MAIN-n;cout<<i:<<i<<a:<<a<<b:<<b<<c:<<c<<endl;c=c+8;other();cout<<-MAIN-n;cout<<i:<<i<<a:<<a<<b:<<b<<c:<<c<<endl;i=i+10;other();,對象的生存期例,-16-,voidother(void)staticinta=2;staticintb;/a,b為靜態(tài)局部變量,具有全局壽命,局部可見。/只第一次進(jìn)入函數(shù)時被初始化。intc=10;/C為局部變量,具有動態(tài)生存期,/每次進(jìn)入函數(shù)時都初始化。a=a+2;i=i+32;c=c+5;cout<<-OTHER-n;cout<<i:<<i<<a:<<a<<b:<<b<<c:<<c<<endl;b=a;,17,-17-,voidRender(Image/非法,沒有定義ColorTable類!,-18-,靜態(tài)數(shù)據(jù)成員用關(guān)鍵字static聲明該類的所有對象維護(hù)該成員的同一個拷貝必須在類外定義和初始化,用(:)來指明所屬的類。靜態(tài)成員函數(shù)類外代碼可以使用類名和作用域操作符來調(diào)用靜態(tài)成員函數(shù)。靜態(tài)成員函數(shù)只能引用屬于該類的靜態(tài)數(shù)據(jù)成員或靜態(tài)成員函數(shù)。,4靜態(tài)成員,-19-,4.1靜態(tài)數(shù)據(jù)成員類的普通數(shù)據(jù)成員:類的靜態(tài)數(shù)據(jù)成員:,在類的每一個對象中都擁有一個拷貝,每個對象的同名數(shù)據(jù)成員可以分別存儲不同的數(shù)值,這也是每個對象擁有自身特征的保證。,是類的數(shù)據(jù)成員的一種特例。每個類只有一個靜態(tài)數(shù)據(jù)成員拷貝,它由該類的所有對象共同維護(hù)和使用,從而實現(xiàn)了同一個類的不同對象之間的數(shù)據(jù)共享。靜態(tài)數(shù)據(jù)成員具有靜態(tài)生存期。,-20-,2.應(yīng)用要點(diǎn):(1)聲明:加static關(guān)鍵字說明。例如:staticintn(2)初始化:在定義時初始化,且必須在類和所有的成員函數(shù)之外,與全局變量初始化的方法一樣。不能在構(gòu)造函數(shù)中初始化。因為靜態(tài)數(shù)據(jù)成員在構(gòu)造函數(shù)被調(diào)用之前就已經(jīng)存在了。形式::=例如:intpoint:n=0;(3)引用:靜態(tài)數(shù)據(jù)成員屬于類,而不屬于任何一個對象,所以,在類外通過類名對它進(jìn)行引用。一般形式如下::;,-21-,(4)靜態(tài)數(shù)據(jù)成員訪問控制限制:private/protected:只能在類內(nèi)通過公有的靜態(tài)成員函數(shù)訪問,在類外無法引用。public:可以采用“類名:成員名”或“對象名.成員名”訪問。,-22-,【例4】含有靜態(tài)數(shù)據(jù)成員。#includeclassTestprivate:intk;public:staticintn;Test(intkk)k=kk;n+;voidDisplay()cout<<n=<<n<<k=<<k<<endl;,n為公有靜態(tài)數(shù)據(jù)成員,用來給Test類的對象計數(shù),每聲明一個新對象,n的值就相應(yīng)加l。,-23-,intTest:n=0;/靜態(tài)數(shù)據(jù)成員初始化voidmain()Testt1(10);t1.Display();Testt2(20);t2.Display();Test:n+;(t1.n+或t2.n+)t2.Display();,三次調(diào)用均訪問的是t1和t2共同維護(hù)的該靜態(tài)成員的拷貝,這樣實現(xiàn)了在t1和t2兩個對象間數(shù)據(jù)共享。,程序運(yùn)行結(jié)果為:n=1k=10n=2k=20n=3k=20,引用方法,-24-,練習(xí):如果我們保持程序的其它部分不變,只將主函數(shù)中改為voidmain()Testt1(10),t2(20);t1.Display();t2.Display();Test:n+;t2.Display();程序運(yùn)行結(jié)果?,-25-,4.2靜態(tài)函數(shù)成員1.定義:使用static關(guān)鍵字聲明的函數(shù)成員。同靜態(tài)數(shù)據(jù)成員一樣,靜態(tài)函數(shù)成員也屬于整個類,由同一個類的所有對象共同維護(hù),為這些對象所共享。2.靜態(tài)成員函數(shù)如何訪問成員數(shù)據(jù):靜態(tài)的成員函數(shù)沒有this指針(1)訪問靜態(tài)成員數(shù)據(jù),可以直接使用其變量名來訪問;(2)訪問非靜態(tài)成員數(shù)據(jù),需要使用“對象名.成員名”;3.公有的、靜態(tài)的成員函數(shù)在類外的調(diào)用方式:類名:成員函數(shù)名(實參表)4.允許用對象調(diào)用靜態(tài)的成員函數(shù)。,-26-,【例5】使用靜態(tài)函數(shù)成員。#includeclassMpublic:M(inta)A=a;B+=a;staticvoidf1(Mm);private:intA;staticintB;,voidM:f1(Mm)cout<<“A=“<<m.A<<endl;cout<<“B=“<<B<<endl;intM:B=0;voidmain()MP(5),Q(10);M:f1(P);M:f1(Q);,訪問靜態(tài)成員數(shù)據(jù),可以直接使用其變量名,訪問非靜態(tài)成員數(shù)據(jù),需要使用“對象名.成員名”;,結(jié)果:A=5B=15A=10B=15,-27-,#includeclassAprivate:intx;public:staticvoidf(Aa);voidA:f(Aa)cout<<x;/對x的引用是錯誤的cout<<a.x;/正確,-28-,【課堂練習(xí)】閱讀程序,寫出程序運(yùn)行結(jié)果#includeclasspointprivate:intx,y;staticintcountP;public:point(intxx=0,intyy=0)x=xx;y=yy;countP+;point(point,intpoint:countP=0;voidmain()point:get_c();/利用類名引用靜態(tài)函數(shù)成員pointa(4,5);cout<<pointa,<<a.get_x()<<,<<a.get_y();a.get_c();/利用對象名引用靜態(tài)函數(shù)成員pointb(a);cout<<pointb,<<b.get_x()<<,<<b.get_y();point:get_c();/利用類名引用靜態(tài)函數(shù)成員,-29-,程序運(yùn)行結(jié)果為:Objectid=0pointa,4,5Objectid=1pointb,4,5Objectid=2,-30-,5友元,1.含義:類的體內(nèi)以friend加以限定的非成員函數(shù),從而可以在此函數(shù)體內(nèi)利用對象訪問類中private成員。2.為什么需要友元:(1)在封裝和快速性方面合理選擇-類的主要特點(diǎn)是使實現(xiàn)數(shù)據(jù)隱藏,既不允許非成員函數(shù)對它訪問,但在某些場合下,非成員函數(shù)體中需要通過對象名訪問private成員,這可以通過友元函數(shù)來實現(xiàn)。(2)有些函數(shù)需要放在外面或者類設(shè)計完后補(bǔ)充的,而不能成為成員函數(shù),但是又需要訪問類中的私有成員。3.作用:實現(xiàn)直接訪問數(shù)據(jù)。,-31-,5.1友元函數(shù)1.定義:如果友元是普通函數(shù)或類的成員函數(shù),則稱為友元函數(shù)。友元函數(shù)是在類聲明中由關(guān)鍵字friend修飾的非成員函數(shù)。2.語法:(1)普通函數(shù)聲明為友元函數(shù)的形式:friend(參數(shù)表)(2)成員函數(shù)聲明為友元函數(shù)的形式:friend:(參數(shù)表),-32-,3.應(yīng)用要點(diǎn):(1)友元函數(shù)的聲明可以在類聲明中的任何位置,既可在public區(qū),也可在protected區(qū),意義完全一樣。(2)友元函數(shù)的定義一般放在類的外部,最好與類的其它成員函數(shù)定義放在一起。如果是普通函數(shù)作為友元,也可以放在類中。(3)友元函數(shù)不是本類的成員函數(shù),但是它可以通過對象名訪問類的所有成員,包括私有和保護(hù)成員。(4)要慎用友元。,-33-,【例】普通函數(shù)作友元函數(shù)。#include#includeclasspointprivate:doublex,y;public:point(doublexx=0,doubleyy=0)x=xx;y=yy;doubleget_x()returnx;doubleget_y()returny;frienddoubledistance(point,-34-,doubledistance(point,-35-,【例】成員函數(shù)作友元函數(shù)。#include#includeclasspoint;/前向聲明point類classApublic:doubledistance(point,-36-,public:point(doublexx=0,doubleyy=0)x=xx;y=yy;doubleget_x()returnx;doubleget_y()returny;frienddoubleA:distance(point,-37-,voidmain()pointmyp1(1,1),myp2(4,5);Aobj;/聲明一個A類的對象cout<<Thedistanceis:<<obj.distance(myp1,myp2)<<endl;,在主函數(shù)中一定要聲明一個A類的對象。只有這樣,才能通過對象名調(diào)用友元函數(shù)。,-38-,4.普通函數(shù)作友元函數(shù)與成員函數(shù)對比:(1)定義:原型定義-采用friend加以限定;函數(shù)體定義-不必采用“類名:”加以限定。(2)調(diào)用方面:友元函數(shù)可直接調(diào)用,不必采用對象方式調(diào)用。5.普通函數(shù)作友元函數(shù)與一般函數(shù)對比:(1)定義:需要在類中加以原型說明(注冊為友好成員)(2)編程應(yīng)用:友元函數(shù)體內(nèi)可以訪問類中的私有成員。成元函數(shù)友元函數(shù)一般函數(shù)“準(zhǔn)成員函數(shù)”安全性-方便性折中,-39-,5.2友元類1.如果友元是一個類,則稱為友元類。2.語法聲明形式:friendclass3.應(yīng)用要點(diǎn):(1)友元類的聲明同樣可以在類聲明中的任何位置。(2)友元類的所有成員函數(shù)都成為友元函數(shù)。例如,若A類為B類的友元類,則A類的所有成員函數(shù)都是B類的友元函數(shù),都可以訪問B類的私有和保護(hù)成員。,-40-,用友元類的方法重做例8。#include#includeclasspoint;/前向聲明point類classApublic:doubledistance(pointclasspoint,-41-,private:doublex,y;public:point(doublexx=0,doubleyy=0)x=xx;y=yy;doubleget_x()returnx;doubleget_y()returny;friendclassA;/A類為友元類;doubleA:distance(point,-42-,voidmain()pointmyp1(1,1),myp2(4,5);Aobj;/必須聲明一個A類的對象cout<<Thedistanceis:“<<obj.distance(myp1,myp2)<<endl;,友元類的成員函數(shù)可以通過對象名直接訪問到隱藏的數(shù)據(jù),達(dá)到高效協(xié)調(diào)工作的目的。,-43-,4.兩點(diǎn)注意:友元關(guān)系是不能傳遞的。B類是A類的友元,C類是B類的友元,C類和A類之間如果沒有聲明,就沒有任何友元關(guān)系,不能進(jìn)行數(shù)據(jù)共享。友無關(guān)系是單向的。如果聲明B類是A類的友元,B類的成員函數(shù)就可以訪問A類的私有和保護(hù)數(shù)據(jù),但A類的成員函數(shù)卻不能訪問B類的私有和保護(hù)數(shù)據(jù)。,-44-,1.功能:類型修飾符,左結(jié)合。用來凍結(jié)一個變量的值,使其值在程序中不能被進(jìn)一步改變(置成只讀屬性,即變?yōu)槌A浚?.定義:const類型定義符變量名=初值;(當(dāng)T是一個簡單數(shù)據(jù)類型時Tconst=constT)例如:constintsumValue=10;(或intconstsumValue=10;)3.應(yīng)用要點(diǎn):(1)替代C中的預(yù)處理命令#define,但比它更加語義精確,因為#define無法反映常量的數(shù)據(jù)類型。如:#definesumValue=10/此時的sumValue是char型還是int型,6常類型(const),-45-,(2)對變量經(jīng)const修飾后,必須給變量賦初值(但函數(shù)的形參不需賦初值),一經(jīng)const修飾后便不能修改此變量之值constintsumValue=10;sumValue=0;/錯誤voidDisplay(constint*a,intn)cout<<a0;/=*(a+0),顯示數(shù)組中的第一個元素之值a0=1;/錯誤,不能修改其值(不能通過指針來改變目標(biāo)單元之值),-46-,()區(qū)分修飾指針的兩種不同用法:a)指向常對象的指針變量:constint*p=p0=2.,constint*pint*constp=,-47-,()C+視const修飾的符號名為常量特性,因而它可以用于任何可能出現(xiàn)數(shù)字常量的場合(如數(shù)組的大小的說明等).constintArraySize=10;chararrayArraySize;()由于C+視const修飾的符號名為常量特性,因而并不對它實際分配內(nèi)存空間constintsumValue=10;/不實際分配內(nèi)存空間intsumValue=10;/實際分配內(nèi)存空間(兩個字節(jié))()#define所定義的符號名為全局性常量,因而在整個程序中應(yīng)保持唯一性;而const可以說明一個局部或全局性同名常量(據(jù)此可以改變const符號名之值),-48-,#defineMin1constintMax=100voidmain(void)#defineMin2/錯誤,不能再定義同名常量constintMax=200/可以再定義同名局部常量,-49-,7.1常引用定義:使用const關(guān)鍵字聲明的引用稱為常引用。常引用所引用的對象不能被更新。語法:常引用的聲明形式:constconstint這段程序編譯時有兩個錯誤:errorC2530:m:referencesmustbeinitializederrorC2166:l-valuespecifiesconstobject,-51-,將上述程序稍作修改,#includevoidmain()intn=5;constint這時,程序運(yùn)行結(jié)果為m=5,-52-,【例10】常引用作形參。#includevoiddisplay(constdoubleerrorC2166:l-valuespecifiesconstobject,常引用做形參時,函數(shù)不能更新r所引用的對象,因此,對應(yīng)的實參就不會被破壞。,-53-,7.2常對象定義:使用const關(guān)鍵字聲明的對象稱為常對象。語法:常對象的聲明形式:const或const聲明常對象的同時,也要進(jìn)行初始化,而且該對象以后不能再被更新。classAprivate:intx,y;,-54-,public:A(inti=0,intj=0)x=i;y=j;/.;Acobj1;Aconstcobj2(3,4);cobj1.print();cobj2.print();X/.errorC2662:print:cannotconvertthispointerfromconstclassAtoclassA3目的:const成員函數(shù)表示該成員函數(shù)只能讀類數(shù)據(jù)成員,而不能修改類成員數(shù)據(jù)。即在不改變對象的成員函數(shù)的函數(shù)原型中加上const說明??商岣叱绦虻目勺x性。還能提高程序的可靠性,已定義成const的成員函數(shù),一旦企圖修改數(shù)據(jù)成員的值,則編譯器按錯誤處理。4應(yīng)用要點(diǎn):const是加在函數(shù)聲明后面的類型修飾符,它是函數(shù)類型的一個組成部分,因此,在實現(xiàn)部分也要帶const關(guān)鍵字。,如果將const放在函數(shù)聲明前意味著函數(shù)的返回值是常量,意義完全不同。,-56-,const關(guān)鍵字可以被用于對重載函數(shù)的區(qū)分。例如,可以在類中這樣聲明:voidfun();voidfun()const;常成員函數(shù)不能更新對象的數(shù)據(jù)成員,也不能調(diào)用該類中沒有用const修飾的成員函數(shù)。如果將一個對象說明為常對象,則通過該對象只能調(diào)用它的常成員函數(shù),而不能調(diào)用其它成員函數(shù)。在C+中,const對象只能調(diào)用const成員函數(shù),-57-,【例11】常成員函數(shù)。#includeclassAprivate:intx,y;public:A(inti=0,intj=0)x=i;y=j;voidfun()/成員函數(shù)cout<<成員函數(shù):x=<<x<<,y=<<y<<endl;voidfun()const/常成員函數(shù)cout<<常成員函數(shù):x=<<x<<,y=<<y<<endl;,-58-,voidmain()Aobj1(1,2);obj1.fun();constAobj2(3,4);/A類常對象obj2.fun();,通過對象obi1調(diào)用的是一般的成員函數(shù),而通過對象obj2調(diào)用的是用const修飾的常成員函數(shù)。,程序運(yùn)行結(jié)果為成員函數(shù):x=1,y=2常成員函數(shù):x=3,y=4,-59-,7.4常數(shù)據(jù)成員1.定義:使用關(guān)鍵字const說明的數(shù)據(jù)成員。包括常引用、常對象等,常數(shù)據(jù)成員不能被更新.2.初始化:用成員初始化列表的方式通過構(gòu)造函數(shù)對該數(shù)據(jù)成員進(jìn)行初始化。,-60-,【例12】常數(shù)據(jù)成員。#includeclassAprivate:constintx;/常數(shù)據(jù)成員staticconstinty;/靜態(tài)常數(shù)據(jù)成員public:constint/常引用,本程序有三個常數(shù)據(jù)成員,-61-,A(inti):x(i),r(x)/常數(shù)據(jù)成員通過初始化列表獲得初值voidfun()cout<<x=<<x<<,y=<<y<<,r=<<r<<endl;constintA:y=5;/靜態(tài)常數(shù)據(jù)成員的初始化voidmain()Aobj1(1),obj2(2);obj1.fun();obj2.fun();,程序運(yùn)行結(jié)果為:x=1,y=5,r=1x=2,y=5,r=2,-62-,編譯預(yù)處理,1.定義:預(yù)處理程序又稱為預(yù)處理器,它包含在編譯器中。預(yù)處理程序提供了一組編譯預(yù)處理指令和預(yù)處理操作符。編譯器在對源程序進(jìn)行編譯之前,首先要由預(yù)處理程序?qū)Τ绦蛭谋具M(jìn)行預(yù)處理,然后編譯器接受預(yù)處理程序的輸出,并將源代碼轉(zhuǎn)化成用機(jī)器語言編寫的目標(biāo)文件。預(yù)處理指令實際上不是C+語言的一部分,它只是用來擴(kuò)充C+程序設(shè)計的環(huán)境。,-63-,需預(yù)處理的源程序,預(yù)處理器,源程序,編譯程序,目標(biāo)匯編程序,匯編程序,可重定位的目標(biāo)代碼,連接/裝配程序,絕對目標(biāo)代碼,高級語言程序到可執(zhí)行代碼的轉(zhuǎn)換過程,-64-,2.使用預(yù)處理指令需要注意以下幾點(diǎn):所有的預(yù)處理指令在程序中都是以“#”來引導(dǎo)。每一條預(yù)處理指令單獨(dú)占用一行,不需要用分號結(jié)束。預(yù)處理指令可以根據(jù)需要出現(xiàn)在程序中的任何位置。3.預(yù)處理指令:,-65-,(1)#include指令1)定義:#include指令也稱文件包含指令,其作用是將另一個源文件嵌入到當(dāng)前源文件中該點(diǎn)處。2)語法及功能:格式1:#include功能:按標(biāo)準(zhǔn)方式搜索C+系統(tǒng)目錄下的include子目錄。格式2:#include“文件名”功能:首先在當(dāng)前目錄中搜索,若沒有,再按標(biāo)準(zhǔn)方式搜索。,-66-,(2)#define和#undef指令1)定義:C,#define符號常量帶參數(shù)的宏。#definePI3.14/定義了一個符號常量PI#defineMAX(a,b)(a)(b)?(a):(b)/定義一個帶參數(shù)的宏MAX(a,b)仍可這樣定義被const替代inline內(nèi)嵌函數(shù)#undef的作用是刪除由#define定義的宏,使之不再起作用。,C+,-67-,(3)條件編譯指令1)定義:限定程序中的某些內(nèi)容要在滿足一定條件的情況下才參與編譯。利用條件編譯可以使同一個源程序在不同的編譯條件下產(chǎn)生不同的目標(biāo)代碼。2)語法:形式1:#ifdef標(biāo)識符程序段1#else程序段2#endif,如果“標(biāo)識符”已經(jīng)定義過,則編譯程序段1,否則編譯程序段2;如果沒有程序段2,則#else可以省略。,-68-,形式2:#ifndef標(biāo)識符程序段1#else程序段2#endif例:#ifndefMYHEAD_H#defineMYHEAD_H#endif本段代碼能夠保證符號MYHEAD_H只有一次定義。,如果“標(biāo)識符”未被定義過,則編譯程序段1,否則編譯程序段2;如果沒有程序段2,則#else可以省略。,-69-,由于文件包含指令可以嵌套使用,在設(shè)計程序時要避免多次重復(fù)包含統(tǒng)一個頭文件,否則會引起變量及類的重復(fù)定義。,/main.cpp#include“file1.h”#include“file2.h”intmain()/file1.h#include“head.h”/file2.h#include“head.h”/head.hclasspoint,/head.h#ifndefHEAD_H#defineHEAD_HClassPoint#enddif,

注意事項

本文(吉大課件C程序結(jié)構(gòu).ppt)為本站會員(sh****n)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!