調(diào)用函數(shù)就是計(jì)算機(jī)編譯或運(yùn)行時(shí),使用某個(gè)函數(shù)來完成相關(guān)命令。對(duì)無參函數(shù)調(diào)用時(shí)則無實(shí)際參數(shù)表。實(shí)際參數(shù)表中的參數(shù)可以是常數(shù)、變量或其它構(gòu)造類型數(shù)據(jù)及表達(dá)式。各實(shí)參之間用逗號(hào)分隔。
創(chuàng)新互聯(lián)公司是專業(yè)的下花園網(wǎng)站建設(shè)公司,下花園接單;提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行下花園網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
這兩個(gè)定義是相對(duì)的,比如說你自己定義編寫了一個(gè)函數(shù),然后在后面的編寫語句中要用到你之前編寫的函數(shù),你引用了,那個(gè)函數(shù)就是被調(diào)用函數(shù),你正在寫的那個(gè)主函數(shù)就是調(diào)用函數(shù)。
通常在C語言中,一個(gè)完整的項(xiàng)目程序是不可能在一個(gè)函數(shù)中實(shí)現(xiàn)所有的功能。而是由若干功能不同的函數(shù)來實(shí)現(xiàn),并且函數(shù)之間會(huì)存在互相調(diào)用的情況。
函數(shù)是C語言的基本組成元素,如果你要想實(shí)現(xiàn)函數(shù)的功能,那么你就必須學(xué)會(huì)正確調(diào)用函數(shù)。當(dāng)我們調(diào)用一個(gè)函數(shù)時(shí),需要明確函數(shù)名和實(shí)參列表。實(shí)參列表中的參數(shù)可以是常量、變量、表達(dá)式或者空,并且各參數(shù)之間要使用英文逗號(hào)分隔開來。
在數(shù)學(xué)運(yùn)算中,會(huì)遇到計(jì)算多個(gè)連續(xù)自然數(shù)之間的和的情況。例如要計(jì)算1~n之間自然數(shù)之和,就需要先計(jì)算1加2的結(jié)果,用這個(gè)結(jié)果加3再得到一個(gè)結(jié)果,用新得到的結(jié)果加4,以此類推,直到用1~(n-1)之間所有數(shù)的和加n。
在程序開發(fā)中,要想完成上述功能,就需要使用函數(shù)的遞歸調(diào)用,所謂的遞歸調(diào)用就是函數(shù)內(nèi)部調(diào)用自身的過程。需要注意的是,遞歸必須要求有結(jié)束條件,不然就會(huì)陷入無限遞歸的狀態(tài),永遠(yuǎn)無法結(jié)束調(diào)用。接下來通過一個(gè)計(jì)算自然數(shù)之和的案例來學(xué)習(xí)遞歸調(diào)用。
擴(kuò)展資料
在C++中,為了允許操作符重載和函數(shù)重載,C++編譯器往往按照某種規(guī)則改寫每一個(gè)入口點(diǎn)的符號(hào)名,以便允許同一個(gè)名字(具有不同的參數(shù)類型或者是不同的作用域)有多個(gè)用法,而不會(huì)打破現(xiàn)有的基于C的鏈接器。
這項(xiàng)技術(shù)通常被稱為名稱改編(Name Mangling)或者名稱修飾(Name Decoration)。許多C++編譯器廠商選擇了自己的名稱修飾方案。
就是在外邊定義一些子函數(shù),然后在主函數(shù)中用到時(shí),調(diào)用那些函數(shù),把主函數(shù)中的數(shù)據(jù)換到子函數(shù)中,按子函數(shù)的算法進(jìn)行運(yùn)算,結(jié)束后回到主函數(shù)繼續(xù)執(zhí)行主函數(shù)。
函數(shù)調(diào)用,就是在一個(gè)函數(shù)里調(diào)用另外一個(gè)函數(shù),由于你調(diào)用的函數(shù)實(shí)現(xiàn)一個(gè)完整功能 或者可能在程序種出現(xiàn)多次,為了方便就寫成一個(gè)獨(dú)立的函數(shù),當(dāng)需要時(shí)只要調(diào)用函數(shù)就可以了。這樣可以提高程序的可讀性,讓程序看起來更加簡(jiǎn)單、易懂。
如果在設(shè)計(jì)c語言程序中,反復(fù)要用到一個(gè)組合計(jì)算的程序段,比如:
void main()
{
int a,b,c,x,y,z,j,k,l;
...
c=a+b; c-=(a-b)/2; //計(jì)算c=(a+b)-(a-b)/2
...
z=x+y; z-=(x-y)/2; //計(jì)算z=(x+y)-(x-y)/2
...
l=j+k; l-=(j-k)/2; //計(jì)算l=(j+k)-(j-k)/2
...
}
由于它們的計(jì)算公式相同,就采用一個(gè)函數(shù)來替代相似的語句:
int fun(int a,int b) { int c; c=a+b; c-=(a-b)/2; return c; } //按照公式計(jì)算并返回結(jié)果
這樣程序就變成了:
int fun(int a,int b) { int c; c=a+b; c-=(a-b)/2; return c; }
void main()
{
int a,b,c,x,y,z,j,k,l;
...
c=fun(a,b);
...
z=fun(x,y);
...
l=fun(j,k);
...
}
*這樣的效果是:重復(fù)利用了函數(shù)的代碼,節(jié)省程序的代碼量(尤其是計(jì)算公式很復(fù)雜的情況更突出),程序簡(jiǎn)潔易讀,便于統(tǒng)一修改計(jì)算公式和方法。
*還有一個(gè)優(yōu)點(diǎn)就是:你調(diào)用函數(shù)時(shí),無須知道算法的細(xì)節(jié),按照函數(shù)調(diào)用規(guī)則就可以使用了,比如,標(biāo)準(zhǔn)c提供的函數(shù)double sin(double x),你只要知道這是個(gè)計(jì)算正弦函數(shù)值的函數(shù)即可,拿來可用而不必去看具體標(biāo)準(zhǔn)函數(shù)庫(kù)是怎樣計(jì)算的。
*你的函數(shù)如果寫得正確、經(jīng)典的話,完全可以封裝成標(biāo)準(zhǔn)函數(shù)拿給其他人使用,甚至可以不提供源代碼就可以。
*沒有返回值的函數(shù)又可以叫子程序