




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
目錄函數(shù)概述6.1函數(shù)的定義與調(diào)用6.2函數(shù)間的信息交換6.3函數(shù)的嵌套調(diào)用和遞歸調(diào)用6.4變量的作用域和存儲類型6.5外部函數(shù)與內(nèi)部函數(shù)6.6多文件程序的運行6.7目錄函數(shù)概述6.16.1函數(shù)概述說明
函數(shù)用來組成源程序文件,而C程序由源程序文件組成,函數(shù)之間彼此平行,定義時相互獨立,但執(zhí)行時可能會交叉執(zhí)行。目的
分而治之,化繁為簡;
減少代碼重復(fù)性;
使代碼模塊化,容易閱讀和維護;分類
庫函數(shù);用戶自定義函數(shù);目錄函數(shù)的定義與調(diào)用6.26.2.1函數(shù)的定義函數(shù)必須限定以后使用。定義語法如下:返回值類型
函數(shù)名(類型參數(shù)1,類型參數(shù)2,……) {
函數(shù)體; //return表達式; }若有return語句,當(dāng)執(zhí)行到return時,就終止函數(shù)的執(zhí)行,返回到調(diào)用它的地方。6.2.2函數(shù)的調(diào)用函數(shù)的調(diào)用形式:
函數(shù)名(實參列表);有返回值時
函數(shù)調(diào)用可以放到一個數(shù)值表達式中
如 c=max(a,b);
也可以作為另一個函數(shù)調(diào)用的參數(shù) c=max(max(a,b),c);無返回值時
函數(shù)調(diào)用可以直接作為表達式
如 display(a,b);6.2.3函數(shù)的聲明調(diào)用函數(shù)之前,先要對其返回值類型、函數(shù)名和參數(shù)進行聲明,有助于編譯器進行類型檢查。聲明時不要省略參數(shù)以及返回值類型。當(dāng)返回值為整型或者函數(shù)定義在函數(shù)調(diào)用前面時,可以省略原型規(guī)定:原型一定要先定義或聲明閱讀代碼,分析編譯錯誤的原因。#include<stdio.h>intmain(){doublem,n,max;scanf("%d%d",&m,&n);max=getMax(m,n); printf("%lf\n",max); return0;}doublegetMax(doublex,doubley){if(x-y>1e-6)returnx;elsereturny;}目錄函數(shù)間的信息交換6.3intAverage(intx,inty){intresult;result=(x+y)/2;returnresult;}intmain(){inta=12;intb=24;intave;ave=Average(a,b);
printf(……);
return0;}數(shù)據(jù)傳遞執(zhí)行順序6.3.1函數(shù)的參數(shù)函數(shù)參數(shù):
形參:在定義函數(shù)時,定義函數(shù)名后面括號中的變量名
實參:主調(diào)函數(shù)中調(diào)用函數(shù),調(diào)用函數(shù)名后面括號中的參數(shù)實參形參6.3.2數(shù)組作為函數(shù)參數(shù)數(shù)組元素作函數(shù)實參
數(shù)組元素可作實參但不能作形參。因為形參是臨時被分
配存儲單元的,而數(shù)組是內(nèi)存中一段連續(xù)的存儲單元,不可能
為一個數(shù)組元素單獨分配存儲單元。求數(shù)組內(nèi)十個元素的最大值并指出其位置所在。#include<stdio.h>intmax(intx,inty);intmain(){inta[10],m,n,i,k;printf("請輸入10個整數(shù):");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=1,n=0,m=a[0];i<10;i++){k=max(m,a[i]); if(k>m){m=k;n=i;}}printf("最大數(shù)是:%d,其在第%d位。\n",m,n+1); return0;}intmax(intx,inty){return(x>y?x:y);}6.3.2數(shù)組作為函數(shù)參數(shù)一維數(shù)組名作函數(shù)參數(shù)
數(shù)組名作實參形參都可以。數(shù)組名作函數(shù)實參時,向形參傳遞的是數(shù)組元素的首地址。求十個學(xué)生的平均成績。在主函數(shù)中定義一個實型數(shù)組score,將輸入的10個學(xué)生成績存放在數(shù)組中。average函數(shù)用來求學(xué)生的平均成績。這樣就需要把數(shù)組有關(guān)的信息傳遞給average函數(shù)。用數(shù)組名作為實參,把數(shù)組地址傳給average函數(shù),在該函數(shù)中對數(shù)組進行處理。#include<stdio.h>floataverage(floatarray[10]){ inti; floataver,sum=array[0]; for(i=0;i<10;i++) sum=sum+array[i]; aver=sum/10; return(aver);}intmain(){ floatscore[10],aver; inti; printf("請輸入10個成績:"); for(i=0;i<10;i++) scanf("%f",&score[i]); aver=average(score);//以數(shù)組名為實參調(diào)用average函數(shù) printf("平均成績:%.2f\n",aver); return0;}6.3.2數(shù)組作為函數(shù)參數(shù)多維數(shù)組名作函數(shù)參數(shù)
多維數(shù)組元素可同一維數(shù)組元素一樣作函數(shù)實參,多維數(shù)組名可做函數(shù)實參和形參。求3*3矩陣中對角線元素之和。#include<stdio.h>intadd(intb[][3],intn);intmain(){inta[3][3]={{1,3,4},{2,4,5},{6,7,4}};inti,j,s;printf("矩陣:\n");for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%4d",a[i][j]);printf("\n");}s=add(a,3);//實參是二維數(shù)組名printf("矩陣的對角線上的元素之和為:%d\n",s); return0;}intadd(intb[][3],intn){inti,j,s=0;for(i=0;i<n;i++)for(j=0;j<n;j++) if(i==j)//對角線元素行號和列號相等s+=b[i][j];returns;}6.3.3參數(shù)傳遞方式值傳遞傳遞的是實際的值,實參和形參占不同的存儲單元且單項值傳遞。調(diào)用結(jié)束后,形參的存儲單元被釋放。void
swap(intx,inty){inttmp;
tmp=x;x=y;y=tmp;
printf(“形參x=%d,y=%d\n”,a,b);}intmain(){inta=10;intb=20;
swap(a,b);
printf(“實參a=%d,b=%d\n”,a,b);return0;}數(shù)據(jù)傳遞執(zhí)行順序形參實參6.3.3參數(shù)傳遞方式地址傳遞傳遞的是地址,形參收到的也是指向?qū)崊⒋鎯卧牡刂?。調(diào)用結(jié)束后,實參隨形參的變化而變化。void
swap(intx[2]){inttmp;
tmp=x[0];x[0]=x[1];x[1]=tmp;
printf(“形參x[0]=%d,x[1]=%d\n”,a,b);}intmain(){inta[2]={10,20};
swap(a);
printf(“實參a[0]=%d,a[1]=%d\n”,a,b);return0;}數(shù)據(jù)傳遞執(zhí)行順序形參實參a[0]10a[1]200x36246.3.4函數(shù)返回值的實現(xiàn)若函數(shù)需要返回值,返回值表達形式為: return(表達式);intAverage(intx,inty){intresult;result=(x+y)/2;returnresult;}intmain(){inta=12;intb=24;intave;ave=Average(a,b);
printf(……);
return0;}數(shù)據(jù)傳遞執(zhí)行順序?qū)崊⑿螀⒛夸浐瘮?shù)的嵌套調(diào)用和遞歸調(diào)用6.46.4.1函數(shù)的嵌套調(diào)用在C語言中,函數(shù)的定義是互相獨立平行的,不可嵌套定義,但是可以在被調(diào)函數(shù)中又調(diào)用函數(shù),這就是嵌套調(diào)用。main(){……a();}a
函數(shù){b();…return;}b函數(shù){……return;}①③④⑤⑥⑦②6.4.1函數(shù)的嵌套調(diào)用求兩整數(shù)的最大公約數(shù)和最小公倍數(shù)。#include<stdio.h>#include<math.h>intgcd(inta,intb){ intc; if(a<b)//保證a的值大于b { c=b; b=a; a=c; } while(a!=0) { c=a%b; b=a; a=c;//把余數(shù)賦值給a,直到a=0時跳出循環(huán),找到結(jié)果。
} returnb;}intlcd(inta,intb){ intc; c=(a*b)/(gcd(a,b));//函數(shù)嵌套的過程
returnc;}intmain(){ intm,n; printf("請輸入兩個數(shù):"); scanf("%d,%d",&m,&n); printf("%d和%d最大公約數(shù)為:%d\n",m,n,gcd(m,n)); printf("最小公倍數(shù)為:%d\n",lcd(m,n));return0;}6.4.2函數(shù)的遞歸調(diào)用
(1)遞歸調(diào)用的內(nèi)容函數(shù)的遞歸調(diào)用就是一個函數(shù)在他的函數(shù)體內(nèi),直接或者間接的調(diào)用了它本身。①
直接遞歸調(diào)用:函數(shù)體內(nèi)直接調(diào)用自身,
示例代碼段如下:voidtest1(){
…… test1();
……}直接遞歸調(diào)用示意圖如圖所示:6.4.2函數(shù)的遞歸調(diào)用
②
間接遞歸調(diào)用:函數(shù)體間接調(diào)用自身,示例代碼段如下:voidtest1(){
…… test2();
……}voidtest2(){
…… test1();
……}6.4.2函數(shù)的遞歸調(diào)用
間接遞歸調(diào)用示意圖所示:以上兩種遞歸調(diào)用在沒有限制條件的情況下都是無限循環(huán)調(diào)用。為了使程序合理化的解決問題,使遞歸調(diào)用有限進行,在使用遞歸調(diào)用時必須在函數(shù)內(nèi)加條件判斷,滿足條件后就不再做遞歸調(diào)用,然后逐層返回。6.4.2函數(shù)的遞歸調(diào)用
(2)遞歸調(diào)用的條件采用遞歸方法來解決問題,必須滿足以下條件:①
可以通過遞歸調(diào)用來縮小問題規(guī)模,且新問題與原問題有著相同的形式,這樣就可以利用遞歸把問題分解成為規(guī)模更小的、具有與原問題有著相同解法的問題;②
存在一種簡單情境,可以使遞歸在簡單情境下退出。6.4.2函數(shù)的遞歸調(diào)用
【例6.12】利用遞歸調(diào)用求費波納契數(shù)列的第n項。#include<stdio.h>longfib(intn){if(n==0)return0;elseif(n==1)return1;elsereturnfib(n-1)+fib(n-2);}intmain(){intn;printf("請輸入n:");scanf("%d",&n);printf("費波納契函數(shù)的第%d項值為:%ld\n",n,fib(n));return0;}程序運行結(jié)果如圖所示:在編寫遞歸調(diào)用的函數(shù)的時候,一定要把對簡單情境的判斷寫在最前面,以保證函數(shù)調(diào)用在檢查到簡單情境的時候能夠及時地中止遞歸,否則,你的遞歸函數(shù)可能會永不停息的在那里遞歸調(diào)用了。6.4.2函數(shù)的遞歸調(diào)用
(3)遞歸調(diào)用的優(yōu)缺點:優(yōu)點:①
代碼簡潔②
便于理解缺點:①
時間和空間的消耗比較大②
重復(fù)計算③
調(diào)用會使內(nèi)存溢出6.4.2函數(shù)的遞歸調(diào)用
【例6.13】利用遞歸調(diào)用求n!。#include<stdio.h>longfactorial(intn){if(n==1)return1;elsereturnn*factorial(n-1);}intmain(){intn;printf("請輸入n:");scanf("%d",&n);printf("%d!=%ld\n",n,factorial(n));return0;}程序運行結(jié)果如圖所示:目錄變量的作用域和存儲類型6.56.5.1變量的作用域變量定義的位置有以下幾種情況:①
在所有函數(shù)外部定義②
在頭文件中定義③
在函數(shù)或語句塊內(nèi)部定義④
函數(shù)的參數(shù)根據(jù)變量定義的位置的不同,可將變量分為局部變量和全局變量兩種類型。6.5.1變量的作用域(1)局部變量定義在函數(shù)體內(nèi)、語句塊內(nèi)部和函數(shù)參數(shù)的變量,稱為局部變量。在函數(shù)體內(nèi)部定義的變量只能在本函數(shù)范圍內(nèi)有效,在此函數(shù)之外是不能使用這些變量的。在復(fù)合語句塊中定義的變量只能在本復(fù)合語句塊中使用。例如:1intfunc()2{3 inta,b,t;4 {5 intc;6 c=a+b;7 }8 t=a*b;9 returnt;10}該程序段第3行定義的變量a、b和t,只能在func()函數(shù)體內(nèi)使用,即第2~9行,在其他地方無法使用。第5行定義的變量c只在復(fù)合語句塊內(nèi)有效,即第4~6,離開此復(fù)合語句塊就無效了,系統(tǒng)會把它占用的內(nèi)存單元釋放。6.5.1變量的作用域注意:①
即使是主函數(shù)中定義的變量,也只是在主函數(shù)內(nèi)部有效。②
不同函數(shù)中的變量可同名。它們之間互相獨立平行,互不干擾。如例題6.13,main()函數(shù)中有一個局部變量n,factorial()函數(shù)的形參n也是局部變量。兩個局部變量雖然同名,但屬于不同的局部代碼區(qū)域,所以相互并無影響。6.5.1變量的作用域(2)全局變量在函數(shù)體內(nèi)定義的變量是局部變量,而在函數(shù)之外定義的變量稱為全局變量。全局變量可以為本文件中其他函數(shù)共用,其有效范圍從定義的那一行開始到本文件結(jié)束?!纠?.15】閱讀以下段代碼,局部變量與外部變量同名,分析結(jié)果。#include<stdio.h>//此處a和b是全局變量inta=3;intb=5;intmax(inta,intb);intmain(){//此處a是局部變量inta=8;printf("max=%d\n",max(a,b));return0;}//此處形參a,b,c是局部變量intmax(inta,intb){intc;c=a>b?a:b;returnc;}首先全局變量給a=3、b=5賦初值,程序執(zhí)行時從main()函數(shù)開始,此時局部變量a有效,給a賦值8,調(diào)用max函數(shù),實參向形參進行值傳遞,將8、5傳給max()函數(shù)的形參a、b,經(jīng)過比較后,max返回值是8,故結(jié)果為8而不是5。當(dāng)局部變量與全局變量同名時,可以根據(jù)就近原則進行選擇使用。6.5.1變量的作用域注意:全局變量雖然作用域大,但是不必要的時候不建議使用全局變量,原因如下:①
全局變量在程序開始到結(jié)束這個過程中一直占用內(nèi)存單元,而不像局部變量一樣需要時才臨時開辟存儲單元;②
變量通用性較低,可移植性較低。因為全局變量一旦使用就會影響這個函數(shù)整體,若需要將這個函數(shù)移植到別的文件中,那其全局變量也要一起移植,這樣就會有變量同名的問題出現(xiàn),就會降低程序的通用性。編寫代碼使遵循的原則是,模塊功能要單一,模塊之間的相互影響要降到最低,因此全局變量的使用不符合此原則。6.5.2變量的生命周期變量除了從作用域的角度分類,分為全局和局部變量之外,還可以從占用內(nèi)存的時間上來觀察,即觀察變量在內(nèi)存中的生存期。變量占用內(nèi)存的時間長度,稱為變量的生命周期。(1)局部變量的生命周期①
定義在函數(shù)體內(nèi)和函數(shù)形參的局部變量,其生命周期是從函數(shù)調(diào)用開始到函數(shù)調(diào)用結(jié)束。②
定義在復(fù)合語句塊中的局部變量,其生命周期是復(fù)合語句塊左括號{開始,到復(fù)合語句塊右括號}結(jié)束。(2)全局變量的生命周期全局變量的生命周期是從程序運行開始,到程序運行結(jié)束,也稱為全周期變量。6.5.3變量的存儲類型根據(jù)變量的生命周期可知,有的變量從程序開始到結(jié)束是一直存在的,而有的變量只是在調(diào)用函數(shù)時才臨時分配存儲單元,函數(shù)調(diào)用結(jié)束后存儲單元就會被釋放。由此得來,變量的存儲有靜態(tài)存儲和動態(tài)存儲兩種方式。靜態(tài)存儲方式是指在程序運行期間由系統(tǒng)分配固定的存儲空間的方式,而動態(tài)存儲方式則是在程序運行期間根據(jù)需要進行動態(tài)的分配存儲空間的方式。6.5.3變量的存儲類型存儲空間可以分為三部分:①
程序區(qū);②
靜態(tài)存儲區(qū);
③
動態(tài)存儲區(qū)。而在動態(tài)存儲區(qū)內(nèi)存放的數(shù)據(jù)有:①
函數(shù)形參,調(diào)用時動態(tài)分配存儲空間;②
函數(shù)體中沒有用static聲明的變量;
③
函數(shù)調(diào)用時的現(xiàn)場保護和返回地址等。6.5.3變量的存儲類型根據(jù)變量存放在內(nèi)存的區(qū)域的不同,可以將變量歸為不同的存儲類型。(1)局部變量的存儲類型①
自動型變量(auto變量)定義局部變量時,如果沒有明變量的存儲類別,都是默認(rèn)為自動型變量。自動型局部變量的數(shù)據(jù)存儲在內(nèi)存的動態(tài)存儲區(qū)。函數(shù)中的形參和定義在函數(shù)中的局部變量都屬于這一類,因為在函數(shù)調(diào)用和結(jié)束會發(fā)生動態(tài)的存儲和釋放存儲空間,所以被稱為自動型變量。用關(guān)鍵字auto聲明,或者省略不寫,會被默認(rèn)為自動變量。例如:inta(intb){ ..... autointc=3; .....}其中b是形參,c是自動變量,執(zhí)行完函數(shù)a后,自動釋放變量b和c的存儲空間。且與auto省略不寫效果相同。6.5.3變量的存儲類型②
靜態(tài)局部變量(static變量)有時程序的功能需求會要求函數(shù)中的局部變量在調(diào)用結(jié)束后繼續(xù)保留原值,而且其占用的存儲空間不被釋放,下次調(diào)用時變量還是上次調(diào)用結(jié)束后的值,這是就需要用static關(guān)鍵字對變量進行聲明,用static關(guān)鍵字修飾的局部變量稱為靜態(tài)變量。【例6.16】求2-5的階乘。#include<stdio.h>intmain(){intfac(intn);inti=1;for(i=2;i<=5;i++)printf("%d!=%d\n",i,fac(i));return0;}intfac(intn){staticintf=1;f=f*n;return(f);}靜態(tài)局部變量在編譯時進行賦初值,只賦值一次,在程序正式運行時就已經(jīng)有初值了,若沒有初始化,則為默認(rèn)值0,這點跟全局變量很類似,因此靜態(tài)局部變量具有全局性。而動態(tài)變量的賦初值是在函數(shù)調(diào)用的時候進行的,每調(diào)用一次函數(shù)重新給一次初值。6.5.3變量的存儲類型③
寄存器量(register變量)一般變量是存放在內(nèi)存中的,當(dāng)程序用到哪一個變量的值時,控制器發(fā)出指令將內(nèi)存中的變量值送到運算器;如果需要保存數(shù)據(jù),再從運算器中將數(shù)據(jù)送回內(nèi)存。運算器與內(nèi)存之間的數(shù)據(jù)傳遞,是需要消耗時間的,若有些變量頻繁使用,則為了提高效率,允許將變量的值放在CPU的寄存器中,需要時直接從寄存器中取出,這種變量就叫做寄存器變量,用關(guān)鍵字register進行聲明?,F(xiàn)在一般比較少用。6.5.3變量的存儲類型(2)全局變量的存儲類型全局變量都是存放在靜態(tài)存儲區(qū)中的,因此它們的生命期存在于程序執(zhí)行的整個過程。而且一般來說它的作用域是從變量定義處到本程序文件的結(jié)尾。但有時需要對全局變量進行作用域的擴展。①
在文件內(nèi)擴展全局變量的作用域
②
將全局變量的作用域擴展到其他文件【例6.17】給定b的值,輸入a和m,求a*b和a的m次冪的值。文件test1.cpp:#include<stdio.h>#include<string.h>intpower(int);inta;intmain(){ intb=3,c,d,m; printf("enterthenumberaanditspowerm:\n"); scanf("%d,%d",&a,&m); c=a*b; printf("%d*%d=%d\n",a,b,c); d=power(m); printf("%d**%d=%d\n",a,m,d); return0;}文件test2.cpp://把test1文件中的全局變量a的作用域擴展到本文件中externinta;intpower(intn){ inti,y=1; for(i=1;i<=n;i++) y*=a; returny;}6.5.3變量的存儲類型注意:不要誤以為對全局變量加static聲明后才采取靜態(tài)存儲方式,而不加static的是采用動態(tài)存儲方式。聲明局部變量的存儲類型和聲明全局變量的存儲類型的含義是不同的。對局部變量來說,聲明存儲類型的作用是指定變量的存儲的區(qū)域(靜態(tài)存儲區(qū)或者動態(tài)存儲區(qū))以及由此產(chǎn)生的生命周期問題。而對于全局變量來說,由于都是在編譯時分配內(nèi)存,都存放在靜態(tài)存儲區(qū),故聲明存儲類型的作用是擴展變量作用域問題。目錄外部函數(shù)與內(nèi)部函數(shù)6.6根據(jù)函數(shù)能否被其他源文件調(diào)用分為內(nèi)部函數(shù)和外部函數(shù)。6.6.1外部函數(shù)
在定義函數(shù)時,若在函數(shù)的存儲類型聲明為關(guān)鍵字extern,則此函數(shù)就是外部函數(shù),可被其他源文件調(diào)用。例如:externintprintName(charstr[]);
這樣函數(shù)PrintName就能被其他文件調(diào)用。C語言規(guī)定,若在定義函數(shù)時省略extern,則默認(rèn)為外部函數(shù),本書中前面所有函數(shù)都默認(rèn)是外部函數(shù)。
在需要調(diào)用此函數(shù)的文件中,也需要對此函數(shù)做聲明,在聲明時要加關(guān)鍵字extern,表示此函數(shù)是在其他文件中定義的外部函數(shù)。6.6.1外部函數(shù)
【例6.18】輸入一行字符串,并刪除想要刪除的字符串中的字段。文件test11.cpp代碼#include<stdio.h>intmain(){//以下3行聲明在main中將要調(diào)用,在其他文件中定義的3個函數(shù)externvoidenterString(charstr[]);externvoiddeleteString(charstr[],charch);externvoidprintString(charstr[]);charc;charstr[80];printf("請輸入一個字符串:");enterString(str);printf("請輸入要刪除的字符:");scanf("%c",&c);deleteString(str,c);printString(str);return0;}文件test12.cpp代碼#include<stdio.h>//定義外部函數(shù)enterString()voidenterString(charstr[80]){gets(str);//向字符數(shù)組輸入字符串}文件test13.cpp代碼//定義外部函數(shù)deleteString()voiddeleteString(charstr[],charch){inti,j;for(i=j=0;str[i]!='\0';i++)if(str[i]!=ch)str[j++]=str[i];str[j]='\0';}文件test14.cpp代碼#include<stdio.h>voidprintString(charstr[]){printf("%s\n",str);}6.6.2內(nèi)部函數(shù)
若函數(shù)只能被本文件中的其他函數(shù)調(diào)用,則該函數(shù)被稱為內(nèi)部函數(shù)。在定義內(nèi)部函數(shù)時,函數(shù)的存儲類型使用static關(guān)鍵字,即:static函數(shù)類型函數(shù)名(形參列表);例如:staticintprint_name(charstr[]);通常在編寫代碼時,習(xí)慣把只作用于本文件的內(nèi)部函數(shù)和全局變量放在文件的開頭,并加static使之局部化,提高程序的可靠性。6.6.2內(nèi)部函數(shù)
【例6.19】繼續(xù)使用例6.18的代碼,將test14.cpp文件中printString()函數(shù)定義為靜態(tài)函數(shù),則該函數(shù)只在test14.cpp中有效,當(dāng)執(zhí)行程序時,IDE會報錯。工程目錄文件和錯誤提示如圖所示。目錄多文件程序的運行6.76.7多文件程序的運行
一個函數(shù)只能定義在一個文件中,但一個文件可以有多個函數(shù)。首先是頭文件和源文件,頭文件中包含一些類型的定義、結(jié)構(gòu)體定義、宏定義、函數(shù)聲明、#include包含等內(nèi)容,在源文件中編寫實際的功能實現(xiàn)。而使用#include""來包含的頭文件,編譯器將會從當(dāng)前程序目錄進行查找。在#include時,被包含文件可以是絕對路徑,也可以是相對路徑,總之,只要頭文件的存放路徑與當(dāng)前源文件的關(guān)系正確即可。6.7多文件程序的運行
多文件編程,編寫步驟如下:①
把所有函數(shù)分散在多個文件中,通常主函數(shù)在單獨的文件里。②
為每個源文件編寫一個配對的以.h作為擴展名的頭文件,不分配內(nèi)存的內(nèi)容都可以寫在頭文件里,頭文件里至少要包含配對源
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)養(yǎng)老面試題及答案
- 浙江升學(xué)考試試題及答案
- 投資預(yù)算面試題及答案
- 車間電工考試題及答案
- 公務(wù)員試題及答案
- 安徽監(jiān)理試題及答案
- 四川水利安全b證考試試題及答案
- 我的世界考試試題及答案
- 2025年地球物理學(xué)專業(yè)畢業(yè)設(shè)計開題報告
- 南通海門中學(xué)2025屆高三上學(xué)期第一次調(diào)研考試化學(xué)試題答案
- DB37-T 3079-2017特種設(shè)備事故隱患排查治理體系細則
- 2023版江西省鄉(xiāng)鎮(zhèn)衛(wèi)生院街道社區(qū)衛(wèi)生服務(wù)中心地址醫(yī)療機構(gòu)名單(1744家)
- 青島版五年級下冊數(shù)學(xué)第4單元《方向與位置》單元整體設(shè)計
- DB53∕T 1012-2021 古茶樹保護管理技術(shù)規(guī)程
- 機械通氣人機對抗的原因及處理高級研修班課件PPT
- 各種隔離標(biāo)識
- 鋼質(zhì)防火門窗項目商業(yè)計劃書范文參考
- 滾動木塊游戲――全球只有4個人通關(guān)的游戲
- 流式細胞儀臨床應(yīng)用手冊
- 煤礦設(shè)備供貨合同書(合同示范文本)
- 生豬屠宰氟制冷通用技術(shù)文件
評論
0/150
提交評論