是函數(shù)參數(shù)的傳遞方式吧。c語言的話是:值傳遞和指針(地址)傳遞。c++的話除了c語言的兩種方式外還有引用傳遞。
成都創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為阿榮等服務(wù)建站,阿榮等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為阿榮企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
#include?stdio.h
//---子函數(shù)聲明---//?
int?func1();
int?func2(int?(*func1)());????????//形參為函數(shù)指針(即指向函數(shù)的指針)?
//---主函數(shù)---//?
int?main(){
printf("向函數(shù)二傳遞函數(shù)一,\n即函數(shù)一作為函數(shù)二的參數(shù)。\n");
printf("%d?",func1());
printf("%d\n",func2(func1));//注意函數(shù)名即為函數(shù)地址?。。。。?!?
}????????????????????????????????//實(shí)參為函數(shù)名func1或者func1,兩者等價(jià),而非func1()?
//---子函數(shù)定義---//?
int?func1(){
return?1;
}
int?func2(int?(*func1)()){????????//形參為函數(shù)指針(即指向函數(shù)的指針)
return?func1()+1;
}
建立中間變量(形參),把實(shí)參值賦值給中間變量,當(dāng)被調(diào)函數(shù)返回值時(shí),系統(tǒng)釋放掉中間變量。
在程序中通過對(duì)函數(shù)的調(diào)用來執(zhí)行函數(shù)體,其過程與其它語言的子程序調(diào)用相似。對(duì)無參函數(shù)調(diào)用時(shí)則無實(shí)際參數(shù)表。實(shí)際參數(shù)表中的參數(shù)可以是常數(shù)、變量或其它構(gòu)造類型數(shù)據(jù)及表達(dá)式。各實(shí)參之間用逗號(hào)分隔。
函數(shù)作為表達(dá)式中的一項(xiàng)出現(xiàn)在表達(dá)式中,以函數(shù)返回值參與表達(dá)式的運(yùn)算。這種方式要求函數(shù)是有返回值的。例如:z=max(x,y)是一個(gè)賦值表達(dá)式,把max的返回值賦予變量z。
擴(kuò)展資料:
C語言中又規(guī)定在以下幾種情況時(shí)可以省去主調(diào)函數(shù)中對(duì)被調(diào)函數(shù)的函數(shù)說明。
1、如果被調(diào)函數(shù)的返回值是整型或字符型時(shí),可以不對(duì)被調(diào)函數(shù)作說明,而直接調(diào)用。這時(shí)系統(tǒng)將自動(dòng)對(duì)被調(diào)函數(shù)返回值按整型處理。例8.2的主函數(shù)中未對(duì)函數(shù)s作說明而直接調(diào)用即屬此種情形。
2、當(dāng)被調(diào)函數(shù)的函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前時(shí),在主調(diào)函數(shù)中也可以不對(duì)被調(diào)函數(shù)再作說明而直接調(diào)用。例如例8.1中,函數(shù)max的定義放在main 函數(shù)之前,因此可在main函數(shù)中省去對(duì)max函數(shù)的函數(shù)說明int max(int a,int b)。
3、如在所有函數(shù)定義之前,在函數(shù)外預(yù)先說明了各個(gè)函數(shù)的類型,則在以后的各主調(diào)函數(shù)中,可不再對(duì)被調(diào)函數(shù)作說明。
參考資料來源:百度百科-函數(shù)調(diào)用
分兩種,一種是按值傳遞,一種是按地址傳遞,
按值傳遞就是在子函數(shù)中開辟出一個(gè)臨時(shí)內(nèi)存空間,將傳遞的數(shù)值保存在這個(gè)空間中,當(dāng)子函數(shù)結(jié)束后,這個(gè)內(nèi)存空間就會(huì)釋放了!
按地址傳遞則是把主函數(shù)開辟的某個(gè)內(nèi)存空間首地址傳遞給子函數(shù),子函數(shù)可以直接讀寫主函數(shù)上這段內(nèi)存空間,當(dāng)子函數(shù)結(jié)束后,這部分空間不會(huì)被釋放,主函數(shù)將繼續(xù)使用這段空間!
return是用來做函數(shù)返回值的(也就是說函數(shù)也是有其類型的),比如函數(shù)定義為int類型,則return返回的也是int型(不管你return后面跟的是什么類型,都要被強(qiáng)制轉(zhuǎn)換為int型)。形參傳遞都是對(duì)實(shí)參值的拷貝,指針變量傳遞過去的是地址(也是拷貝哦,只不過是地址),然后在函數(shù)中通過地址直接操作地址中所保存的變量的值(相當(dāng)于直接操作變量)來達(dá)到更改實(shí)參指針?biāo)赶虻淖兞康闹担ㄓ悬c(diǎn)拗,不懂可以聯(lián)系我,慢慢講解一下,指針是非常重要的哦)。接下來講解一下int
*p(int
*pA);
首先你定義的是一個(gè)指針函數(shù)(即該函數(shù)返回值是一個(gè)指針,并且是一個(gè)指向int類型的指針,也可以研究一下函數(shù)指針的作用哦),然后該函數(shù)的參數(shù)也是一個(gè)指向Int類型的指針變量。調(diào)用該函數(shù)時(shí),傳遞給pA的是指針(指針的意思就是地址,指針變量是用來存放該地址的變量),也是實(shí)參指針變量的值的拷貝(明白了吧?^_^);接下來是返回值,從定義只能看出,其返回值為指向int類型的指針,而這個(gè)指針指向什么地址,就要看你的具體return返回值語句了。