




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第6章模塊化程序設(shè)計(jì)——函數(shù)4/29/202511第1頁§6.1函數(shù)概念C程序結(jié)構(gòu)●C程序結(jié)構(gòu)如圖所表示1.一個(gè)C程序能夠分為若干個(gè)函數(shù)2.每個(gè)程序有且只有一個(gè)主函數(shù)(main),其它都是子函數(shù)3.子函數(shù)能夠相互調(diào)用,但主函數(shù)不能被調(diào)用4.一個(gè)C源程序由一個(gè)或多個(gè)文件組成,每個(gè)文件就是一個(gè)編譯單位2第2頁●說明:1.一個(gè)C程序執(zhí)行從主函數(shù)(main)開始,調(diào)用其它函數(shù)后仍回到main主函數(shù)結(jié)束.2.每個(gè)子函數(shù)都是平行,任何子函數(shù)都不隸屬于其它函數(shù)3.從用戶角度,函數(shù)能夠分為:
☆標(biāo)準(zhǔn)函數(shù),即庫函數(shù)
☆用戶自定義函數(shù)4.從函數(shù)形式能夠分為:☆無參函數(shù):printstar()☆有參函數(shù):printf(“hello”)#include<stdio.h>voidprintStar(){printf(“*******************\n”);}voidprintMessage(){printf(“Hello,world.\n”);printStar();}voidmain(){printStar();printMessage();}3第3頁函數(shù)定義普通形式●函數(shù)定義普通形式:類型說明函數(shù)名([形式參數(shù)說明]){函數(shù)體}形式參數(shù)說明方法:
數(shù)據(jù)類型變量名[,類型變量名]●無參數(shù)函數(shù)定義形式:
類型說明函數(shù)名(){函數(shù)體}voidprintHello(){printf(“hello!\n”);}●有參數(shù)函數(shù)定義形式:
類型說明函數(shù)名(形式參數(shù)說明){函數(shù)體}intsum(intx,inty){intz;z=x+y;return(z);}4第4頁●函數(shù)體普通情況下,函數(shù)體有兩部分組成:
{[局部變量說明]語句;}局部變量說明:函數(shù)體內(nèi)變量.其有效范圍僅在本函數(shù)體內(nèi)起作用,離開本函數(shù)無意義.intsum(intx,inty){intz;//局部變量定義z=x+y;return(z);}5第5頁函數(shù)參數(shù)和函數(shù)值●一個(gè)程序由若干個(gè)函數(shù)組成,各函數(shù)調(diào)用時(shí)經(jīng)常要傳遞一些數(shù)據(jù),即調(diào)用函數(shù)把數(shù)據(jù)傳遞給被調(diào)用函數(shù),經(jīng)過被調(diào)用函數(shù)處理后,得到一個(gè)確定結(jié)果,在返回調(diào)用函數(shù)時(shí),將結(jié)果帶回調(diào)用函數(shù).#include<stdio.h>intmax(intx,inty){intz;z=(x>y)?x:y;return(z);}voidmain(){inta,b,c;scanf(“%d%d”,&a,&b);c=max(a,b);printf(“maxis%d\n”,c);}主函數(shù)子函數(shù)..
c=max(a,b);..intmax(intx,inty)...return(z);a,bz各函數(shù)之間數(shù)據(jù)往來經(jīng)過參數(shù)傳遞和返回語句實(shí)現(xiàn)6第6頁函數(shù)參數(shù):用于函數(shù)間數(shù)據(jù)傳遞形式參數(shù):定義函數(shù)時(shí)給出參數(shù)實(shí)際參數(shù):調(diào)用函數(shù)時(shí)給出參數(shù)#include<stdio.h>intmax(int
x,int
y){intz;z=(x>y)?x:y;return(z);}voidmain(){inta,b,c;scanf(“%d%d”,&a,&b);c=max(a,b);printf(“maxis%d\n”,c);}對于函數(shù)max有兩個(gè)形式參數(shù)x,y形式參數(shù)x和y只在max函數(shù)中使用a,b是主函數(shù)中定義變量,當(dāng)main函數(shù)調(diào)用max函數(shù)時(shí).a,b成為max實(shí)際參數(shù)調(diào)用時(shí),實(shí)際參數(shù)值賦給形參進(jìn)行處理例:max接收到兩個(gè)值:89max返回89一、形式參數(shù)和實(shí)際參數(shù)7第7頁#include<stdio.h>intmax(int
x,int
y){intz;z=(x>y)?x:y;return(z);}voidmain(){inta,b,c;scanf(“%d%d”,&a,&b);c=max(a,b);printf(“maxis%d\n”,c);}說明:1.定義函數(shù)時(shí),必須說明形參類型,形參只能是變量(包含數(shù)組).不能是常量或表示式2.函數(shù)被調(diào)用之前,形參和子函數(shù)中變量不占內(nèi)存,調(diào)用結(jié)束返回,形參所占內(nèi)存被收回.3.實(shí)參能夠是常量、變量或表示式.因?yàn)閭鬟f過來是詳細(xì)數(shù)值.4.實(shí)參和形參類型必須一致(或能夠安全轉(zhuǎn)換).5.C語言中,實(shí)參和形參傳遞是”按值傳遞”,即單向傳遞,只與參數(shù)相對位置相關(guān),而與變量名無關(guān)intb,intaintc;c=(a>b)?a:b;return(c);1320main-amain-bmax-amax-b13208第8頁#include<stdio.h>intsum(inta,intb){a=a+b;b=a+b;return(a);}voidmain(){inta=1,b=3,c;c=sum(a,b);printf(“sumof%d,%dis%d\n”,a,b,c);}閱讀下面程序,寫出運(yùn)行結(jié)果函數(shù)被調(diào)用之前,形參和子函數(shù)中變量不占內(nèi)存,調(diào)用結(jié)束返回,形參所占內(nèi)存被收回.實(shí)參和形參傳遞是”值傳遞”,即單向傳遞,只與參數(shù)相對位置相關(guān),而與變量名無關(guān)sumof1,3is49第9頁二、函數(shù)返回值#include<stdio.h>intmax(int
x,int
y){intz;z=(x>y)?x:y;return(z);}voidmain(){inta,b,c;scanf(“%d%d”,&a,&b);c=max(a,b);printf(“maxis%d\n”,c);}函數(shù)值也就是函數(shù)返回值,是一個(gè)詳細(xì)確定值.①函數(shù)使用return語句返回值。②一個(gè)函數(shù)內(nèi)能夠有多個(gè)return語句,執(zhí)行到任何return語句,函數(shù)都將馬上返回到調(diào)用函數(shù)if(x>y)return(x);elsereturn(y);③return后面()能夠省略,能夠返回一個(gè)表示式,先求解表示式值,再返回.intmax(intx,inty){returnx>y?x:y;}1.返回函數(shù)值方法10第10頁#include<stdio.h>intmax(int
x,int
y){intz;z=(x>y)?x:y;return(z);}voidmain(){inta,b,c;scanf(“%d%d”,&a,&b);c=max(a,b);printf(“maxis%d\n”,c);}2.函數(shù)值類型
①函數(shù)類型即函數(shù)值類型.比如,函數(shù)max是int型,函數(shù)返回值也是int型.②省略了類型說明函數(shù)就是int型.③return中表示式值普通和函數(shù)類型相同.④假如不一致,則需要進(jìn)行類型轉(zhuǎn)換.以函數(shù)類型為準(zhǔn).11第11頁3.不需要返回函數(shù)①假如函數(shù)中沒有return,認(rèn)為是一個(gè)過程,能夠使用類型void.②假如一個(gè)函數(shù)被申明void類型,就不允許再引用它返回值。只能單純調(diào)用它。#include<stdio.h>voidprintStar(){printf(“*******************\n”);}voidprintMessage(){printf(“Hello,world.\n”);printStar();}voidmain(){printStar();printMessage();}12第12頁函數(shù)調(diào)用一、函數(shù)調(diào)用普通形式普通形式:
函數(shù)名(實(shí)參列表)說明:①假如調(diào)用無參函數(shù),實(shí)參表列能夠忽略,但括號(hào)不能省.②實(shí)參個(gè)數(shù)和形參個(gè)數(shù)相同.③實(shí)參和形參類型一一對應(yīng),必要時(shí)會(huì)進(jìn)行類型轉(zhuǎn)換.注意:不一樣系統(tǒng)中,實(shí)參計(jì)算次序不一樣.普通認(rèn)為從右到左計(jì)算和賦值.普通在調(diào)用函數(shù)前計(jì)算出實(shí)參值例1讀程序,寫出結(jié)果#include<stdio.h>intf(inta,intb){intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;returnc;}voidmain(){inti=2,p;p=f(i,++i);printf(“%d”,p);}13第13頁二、函數(shù)調(diào)用方式1、函數(shù)語句
形式為:函數(shù)(實(shí)參表列);比如:printMessage();printf(“%d”,p);說明:這種方式不要求函數(shù)帶返回值,函數(shù)只執(zhí)行一定操作.2、函數(shù)表示式
函數(shù)返回值參加運(yùn)算比如:m=max(a,b);m=3*max(a,b);printf(“%d”,max(a,b));說明:這種方式函數(shù)不能用于void類型14第14頁三、函數(shù)調(diào)用執(zhí)行過程①從右到左次序,計(jì)算實(shí)參中各表示式值.②按照位置,將實(shí)參值一一傳遞給形參.③執(zhí)行被調(diào)用函數(shù).④當(dāng)碰到return(表示式)語句時(shí),計(jì)算表示式值并返回主調(diào)函數(shù).例2讀程序,寫出結(jié)果#include<stdio.h>intiabs(floatx){return(x>0?x:-x);}voidmain(){floatx=-0.6,y;y=iabs(2*x);printf(“x=%f,iabs(x)=%f\n”,x,y);}1234X=-0.600000,iabs(x)=1.00000015第15頁四、函數(shù)原形在程序中調(diào)用函數(shù)需滿足以下條件:①被調(diào)用函數(shù)必須存在,且必須遵照“先定義后使用”標(biāo)準(zhǔn)②假如被調(diào)用函數(shù)定義在主調(diào)函數(shù)之后,能夠在調(diào)用之前給出原形說明.原形說明:類型說明函數(shù)名(參數(shù)類型,參數(shù)類型…)16第16頁函數(shù)嵌套調(diào)用嵌套調(diào)用是指在一個(gè)函數(shù)函數(shù)體中又調(diào)用了其它函數(shù).程序執(zhí)行過程:第一層第二層第三層
main()printStar(){{printStar();……}printfMessage()printMessage();{……printStar();printStar();{……}}}結(jié)束#include<stdio.h>voidprintStar(){printf(“*******************\n”);}voidprintMessage(){printf(“Hello,world.\n”);printStar();}voidmain(){printStar();printMessage();}17第17頁例3編程求分析:重復(fù)三次不一樣階乘運(yùn)算,只是每次值不一樣.將求階乘過程編程一個(gè)函數(shù)fac,以不一樣參數(shù)值來調(diào)用facfackk!#include<stdio.h>#include<math.h>floatfac(intk);{floatt=1.0;inti;for(i=2;i<=k;i++)t*=i;returnt;}voidmain(){floatc;intm,n;printf(“inputm,n:”);scanf(“%d%d”,&m,&n);c=fac(n)/(fac(m)*fac(n-m));printf(“%.0f\n”,c);}18第18頁許多數(shù)學(xué)函數(shù)都是使用遞歸調(diào)用形式定義:函數(shù)遞歸調(diào)用當(dāng)n=1時(shí)當(dāng)n>1時(shí)當(dāng)n=0時(shí)當(dāng)n!=1時(shí)19第19頁函數(shù)遞歸調(diào)用是指在調(diào)用一個(gè)函數(shù)時(shí)又直接或間接調(diào)用函數(shù)本身.直接調(diào)用間接調(diào)用遞歸調(diào)用必須引入一個(gè)循環(huán)條件控制遞歸結(jié)束,不然進(jìn)入死循環(huán).20第20頁例4有5個(gè)人坐在一起,問第5個(gè)人多少歲?答:比第4個(gè)人大2歲;第4個(gè)人說他比第三個(gè)人大2歲;第3個(gè)人比第2個(gè)人大2歲,第2個(gè)人比第1個(gè)人大2歲.而第1個(gè)人有10歲.問第5個(gè)人多少歲?計(jì)算公式:(n=1)(n>1)回推階段遞推階段21第21頁函數(shù)調(diào)用過程#include<stdio.h>intage(intn){intc;if(n==1)c=10;elsec=age(n-1)+2;returnc;}voidmain(){printf(“%d“,age(5));}22第22頁例5用遞歸調(diào)用求n!階乘(n>=0)使用循環(huán)做:floatfac(intn){floatf=1;if(n>=0)for(i=2;i<=n;i++)f*=i;elsef=-1;returnf;}#include<stdio.h>floatfac(intn){floatf;if(n>1)f=fac(n-1)*n;elseif(n==0||n==1)f=1;elsef=-1;returnf;}voidmain(){intn;floaty;printf(“inputaintegernumber:”);scanf(“%d”,&n);y=fac(n);if(y<0)printf(“error:%d\n”,n);elseprintf(“%d!=%.0f\n”,n,y);}遞歸公式:(n=0,1)(n>1)23第23頁
依據(jù)變量作用域不一樣,可分為局部變量和全局變量兩種。1.變量作用域變量作用域:變量起作用范圍。①局部變量:在函數(shù)內(nèi)部或某個(gè)控制塊內(nèi)部定義變量。
局部變量作用域:函數(shù)內(nèi)部。
作用:增強(qiáng)了函數(shù)模塊獨(dú)立性。②全局變量:在函數(shù)外面定義變量稱為全局變量。
全局變量作用域:從該變量定義位置開始,直到源文件結(jié)束。
作用:在同一文件中,全部函數(shù)都能夠引用全局變量。增強(qiáng)了各函數(shù)間數(shù)據(jù)聯(lián)絡(luò)?!?.2變量作用域24第24頁
局部變量和全局變量作用域如圖所表示:25第25頁閱讀程序【例6-4】程序,了解變量作用域。
請注意區(qū)分局部變量和全局變量作用域。程序:example6_4.c26第26頁變量存放類別一、變量動(dòng)態(tài)存放和靜態(tài)存放全局變量和局部變量
變量作用域靜態(tài)存放和動(dòng)態(tài)存放
變量存放類別:生存期內(nèi)存中供用戶使用空間有:①代碼區(qū)②靜態(tài)存放區(qū):編譯時(shí)分配空間③動(dòng)態(tài)存放區(qū):執(zhí)行時(shí)分配空間變量或函數(shù)屬性:數(shù)據(jù)類型存放類型自動(dòng)型auto靜態(tài)型static存放器register外部型extern27第27頁二、局部變量存放類別1、自動(dòng)類別存放在動(dòng)態(tài)存放區(qū),用auto說明如:intfunc1(inta){
autointb,c=3;……}形參a,變量b,c都是自動(dòng)變量,調(diào)用函數(shù)時(shí),系統(tǒng)給它們分配存儲(chǔ)空間,函數(shù)調(diào)用結(jié)束時(shí),自動(dòng)釋放空間.通常auto能夠省略28第28頁2、局部靜態(tài)變量占用靜態(tài)存放,用static說明說明:①局部靜態(tài)變量,屬于靜態(tài)存放類別,在程序執(zhí)行整個(gè)過程中,都不釋放存放空間.②局部靜態(tài)變量在編譯時(shí)賦值,僅賦值一次.③假如定義局部靜態(tài)變量沒有賦初值,系統(tǒng)會(huì)自動(dòng)賦初值.④局部靜態(tài)變量,只有在定義它函數(shù)內(nèi)被引用(它存在,但不被其它函數(shù)引用)假如f不定義成static是什么結(jié)果?f=1;j=1;fac(1):f=f*n=1*1=1;輸出1!=1;j=2;fac(2):f=f*n=1*2=2;輸出2!=2;j=3;fac(3):f=f*n=2*3=6;輸出3!=6;j=4;fac(4):f=f*n=6*4=24;輸出4!=24;29第29頁3、存放器變量存放在存放器中,用register說明說明:①計(jì)算機(jī)存放器個(gè)數(shù)有限.②存放器變量對存放器占有是動(dòng)態(tài)③有系統(tǒng)對存放器變量轉(zhuǎn)化為自動(dòng)變量處理,而有系統(tǒng)會(huì)自動(dòng)設(shè)置存放器變量.30第30頁三、全局變量存放類別全局變量都存放在靜態(tài)存放區(qū)。用static關(guān)鍵字申明全局變量,只能在本文件內(nèi)使用。沒有用static關(guān)鍵字全局變量能夠在別文件中使用extern關(guān)鍵字申明為外部變量,并在該文件中作為全局變量使用。盡可能少使用全局變量/*a.c*/intmax;voidcalcMax(inta[],intn){......}/*main.c*/externintmax;voidmain(){...printf(“%d”,max);...}/*a.c*/staticintmax;voidcalcMax(inta[],intn){......}/*main.c*/externintmax;voidmain(){...printf(“%d”,max);...}錯(cuò)!max未定義錯(cuò)!不能引用max31第31頁四、存放類別小結(jié)1、變量定義方法[存放類別]數(shù)據(jù)類型變量名……2、變量劃分按作用域劃分:按生存期局部變量全局變量自動(dòng)變量靜態(tài)變量存放器變量形式參數(shù)變量動(dòng)態(tài)存放靜態(tài)存放自動(dòng)變量形式參數(shù)存放器變量靜態(tài)局部變量全局變量按變量存放位置動(dòng)態(tài)存放區(qū)靜態(tài)存放區(qū)自動(dòng)變量形式參數(shù)靜態(tài)局部變量全局變量存放器存放器變量32第32頁
自定義函數(shù)有兩種:內(nèi)部函數(shù)和外部函數(shù)。1.內(nèi)部函數(shù)若函數(shù)存放類型為static型,則稱其為內(nèi)部函數(shù)(內(nèi)部函數(shù)又稱為靜態(tài)函數(shù)),它表示在由多個(gè)源文件組成同一個(gè)程序中,該函數(shù)只能在其所在文件中使用,在其它文件中不可使用。
內(nèi)部函數(shù)申明形式:
static<返回值類型><函數(shù)名>(<參數(shù)>);比如:
staticintStatistic();2.外部函數(shù)若函數(shù)存放類型定義為extern型,則稱其為外部函數(shù),它表示該函數(shù)能被其它源文件調(diào)用。
函數(shù)默認(rèn)存放類型為extern型?!?.3內(nèi)部函數(shù)與外部函數(shù)33第33頁
外部函數(shù)應(yīng)用示例。下面程序由3個(gè)文件組成:file1.c、file2.c、example6_6.c。在file1.c、file2.c中分別定義了兩個(gè)外部函數(shù);在example6_6.c中能夠分別調(diào)用這兩個(gè)函數(shù)。1.file1.c/*file1.c外部函數(shù)定義*/externintadd(intm,intn){return(m+n);}2.file2.c/*file2.c外部函數(shù)定義*/externintmod(inta,intb){return(a%b);}34第34頁3.example6_6.c#include<stdio.h>externintmod(inta,intb); /*外部函數(shù)申明*/externintadd(intm,intn); /*外部函數(shù)申明*/main(){intx,y,result1,result2,result;printf("Pleaseenterxandy:\n");scanf("%d%d",&x,&y);result1=add(x,y); /*調(diào)用file1中外部函數(shù)*/printf("x+y=%d\n",result1);if(result1>0)
result2=mod(x,y); /*調(diào)用file2中外部函數(shù)*/result=result1-result2;printf("mod(x,y)=%d\n",result2);printf("(x+y)-mod(x,y)=%d\n",result);}35第35頁
關(guān)于程序幾點(diǎn)說明(1)在程序file1.c、file2.c中函數(shù)定義能夠不需要extern加以說明,默認(rèn)為外部函數(shù)。(2)在example6_6.c中對外部函數(shù)申明也能夠不用extern加以說明,默認(rèn)為外部函數(shù)。(3)由多個(gè)源文件組成一個(gè)程序時(shí),main()函數(shù)只能出現(xiàn)在一個(gè)源文件中。(4)由多個(gè)源文件組成一個(gè)程序時(shí),有3種連接方式:①將各源文件分別編譯成目標(biāo)文件,得到多個(gè)目標(biāo)文件(.obj后綴),然后用連接命令把多個(gè).obj文件連接起來。
36第36頁②建立項(xiàng)目文件(.prj后綴或.dsw后綴),詳細(xì)操作可參閱各種C語言集成開發(fā)環(huán)境說明。③使用文件包含命令。請參閱本章6.6節(jié)。(5)假如將file1.c或file2.c中extern改成static,則主程序在編譯時(shí)無法經(jīng)過。(6)在程序file1.c或file2.c中,也能夠相互調(diào)用其外部函數(shù)。Turboc連接接命令為tlink
比如:tlinkexample6_6.obj+file1.obj+file2.obj
結(jié)果:生成一個(gè)example6_6.exe文件。37第37頁
§6.4編譯預(yù)處理作用:在對源程序編譯之前做一些處理,生成擴(kuò)展C源程序種類宏定義
#define文件包含
#include條件編譯
#if--#else--#endif等格式:“#”開頭占單獨(dú)書寫行語句尾不加分號(hào)38第38頁如#defineYES1#defineNO0if(x==YES)printf(“correct!\n”);elseif(x==NO)printf(“error!\n”);展開后:if(x==1)printf(“correct!\n”);elseif(x==0)printf(“error!\n”);1
宏定義不帶參數(shù)宏定義普通形式#define宏名(標(biāo)識(shí)符)[宏體](字符串)功效:用指定標(biāo)識(shí)符(宏名)代替字符序列(宏體)宏展開:預(yù)編譯時(shí),用宏體來替換宏名---不作語法檢驗(yàn)如#defineYES1#defineNO0#definePI3.1415926#defineOUTprintf(“Hello,World”);說明:1.定義位置:任意(普通在函數(shù)外面)2.作用域:從定義命令到文件結(jié)束3.#undef可終止宏名作用域格式:#undef宏名例#defineYES1main(){……..}#undefYES#defineYES0max(){……..}YES原作用域YES新作用域5.宏定義可嵌套,不能遞歸例#defineMAXMAX+10(
)4.引號(hào)中內(nèi)容與宏名相同也不置換例#definePI3.14159printf(“2*PI=%f\n”,PI*2);宏展開:printf(“2*PI=%f\n”,3.14159*2);6.宏定義中使用必要括號(hào)()例#defineWIDTH80#defineLENGTH
WIDTH+40var=LENGTH*2;宏展開:var=80+40*2;()()例#defineWIDTH80#defineLENGTH
WIDTH+40var=LENGTH*2;宏展開:var=WIDTH+40*2var=80+40*27.只是簡單替換,標(biāo)識(shí)符不占內(nèi)存空間8.普通宏名使用大寫字母形式.39第39頁帶參數(shù)宏定義普通形式:#define宏名(參數(shù)表)宏體例#defineS(r)PI*r*r相當(dāng)于定義了不帶參宏S,代表字符串“(r)PI*r*r”說明:1.宏展開:不但宏體替換,還要進(jìn)行形參替換2.宏體及各形參外普通應(yīng)加括號(hào)()3.宏名與參數(shù)之間不能有空格例#defineS(a,b)a*b………..area=S(3,2);宏展開:area=3*2;不能加空格例#definePOWER(x)x*xx=4;y=6;z=POWER(x+y);宏展開:z=x+y*x+y;普通寫成:#definePOWER(x)((x)*(x))宏展開:z=((x+y)*(x+y));①②③40第40頁#defineMAX(x,y)(x)>(y)?(x):(y)…….main(){inta,b,c,d,t;…….t=MAX(a+b,c+d);……}宏展開:t=(a+b)>(c+d)?(a+b):(c+d);intmax(intx,inty){return(x>y?x:y);}main(){inta,b,c,d,t;…….t=max(a+b,c+d);………}4.用宏定義能夠?qū)崿F(xiàn)和函數(shù)一樣功效<>41第41頁5.帶參宏與函數(shù)區(qū)分帶參宏函數(shù)處理過程不分配內(nèi)存簡單字符置換分配內(nèi)存先求實(shí)參值,再代入形參處理時(shí)間編譯前程序運(yùn)行時(shí)參數(shù)類型無類型問題定義實(shí)參,形參類型程序長度變長不變運(yùn)行速度不占運(yùn)行時(shí)間調(diào)用和返回占時(shí)間42第42頁2文件包含功效:一個(gè)源文件可將另一個(gè)源文件內(nèi)容全部包含進(jìn)來普通形式:#include“文件名”或#include<文件名>#include“file2.c”file1.cfile2.cfile1.cBABA處理過程:預(yù)編譯時(shí),用被包含文件內(nèi)容取代該預(yù)處理命令,再對“包含”后文件作一個(gè)源文件編譯<>直接按標(biāo)準(zhǔn)目錄搜索(存放C庫函數(shù)頭文件)“”先在當(dāng)前目錄搜索,再搜索標(biāo)準(zhǔn)目錄
可指定路徑43第43頁被包含文件內(nèi)容源文件(*.c)頭文件(*.h)宏定義數(shù)據(jù)結(jié)構(gòu)定義函數(shù)說明等文件包含可嵌套#include“file2.c”file1.cAfile3.cC#include“file3.c”file2.cBfile1.cAfile3.cfile2.c44第44頁例文件包含舉例/*powers.h*/#definesqr(x)((x)*(x))#definecube(x)((x)*(x)*(x))#definequad(x)((x)*(x)*(x)*(x))#include<stdio.h>#include“c:\powers.h"#defineMAX_POWER10voidmain(){intn;printf("numberexp1\texp2\texp3\texp4\n");printf("----\t----\t-----\t------\n");for(n=1;n<=MAX_POWER;n++)printf("%2d\t%3d\t%4d\t%5d\n",n,sqr(n),cube(n),quad(n));}45第45頁3條件編譯概念:在某個(gè)條件成立情況下才對某一部分進(jìn)行編譯。三種格式:格式二形式:作用:假如標(biāo)識(shí)符沒有被#define命令定義過,則對程序段1進(jìn)行編譯,不然對程序段2進(jìn)行編譯格式三形式:作用:假如指定常量表示式1值為真(非零),則對程序段1進(jìn)行編譯,不然假如指定常量表示式2值為真(非零),則
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 船舶通信與無線電技術(shù)考核試卷
- 乳品加工廢棄物的資源化利用技術(shù)考核試卷
- 原油加工設(shè)備的技術(shù)規(guī)范與操作標(biāo)準(zhǔn)考核試卷
- 股票期權(quán)激勵(lì)協(xié)議與員工培訓(xùn)體系
- 抖音火花文化遺產(chǎn)網(wǎng)絡(luò)直播內(nèi)容推廣合同
- 注冊會(huì)計(jì)師崗位全職聘用與審計(jì)質(zhì)量控制合同
- 婚前共同創(chuàng)業(yè)項(xiàng)目商業(yè)秘密處理與婚后經(jīng)營協(xié)議
- 氫能項(xiàng)目氫燃料電池性能評估測試員合同
- 離異家庭子女撫養(yǎng)權(quán)變更及共同監(jiān)護(hù)協(xié)議
- 生物醫(yī)藥企業(yè)股權(quán)轉(zhuǎn)讓限制與專利許可協(xié)議
- 2025-2030中國振動(dòng)監(jiān)測系統(tǒng)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報(bào)告
- 合肥高新美城物業(yè)有限公司招聘筆試題庫2025
- 《詞匯構(gòu)建法:課件中的詞根詞綴解析》
- 2025年山東省濟(jì)南市歷城區(qū)中考一模物理試題(原卷版+解析版)
- Unit 7 第1課時(shí) Welcome to the unit【基礎(chǔ)深耕】七年級英語下冊高效課堂(譯林版2024)
- 2025年第33批 歐盟REACH SVHC高度關(guān)注物質(zhì)清單247項(xiàng)
- 2024年江蘇省南京市中考物理試卷真題(含答案)
- K30自動(dòng)生成及計(jì)算試驗(yàn)記錄
- 2024-2025春魯教版(五四學(xué)制)(2024)化學(xué)初中八年級全一冊第七單元 燃燒及其控制《第二節(jié)促進(jìn)燃燒與防止爆炸》教學(xué)設(shè)計(jì)
- 新能源項(xiàng)目融資策略-全面剖析
- 2025年安徽國元農(nóng)業(yè)保險(xiǎn)滁州中心支公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論