我以前答過的一個題的例子拿給你看看。
10余年的東莞網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整東莞建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“東莞網(wǎng)站設計”,“東莞網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
函數(shù)名:errorSetHandler
參數(shù):function是個函數(shù)類型的變量,void (*)(int, char_t *),這個函數(shù)類型有兩個參數(shù),一個整型,一個char_t *的指針型,返回是個void *指針。
返回:是個函數(shù)類型,void (*)(int , char_t *),類型說明跟上面一樣。
void (*errorSetHandler(void (*function)(int etype, char_t *msg)))(int etype, char_t *msg)
{
void (*oldHandler)(int etype, char_t *buf); //定義一個函數(shù)void (*)(int , char_t *)類型的函數(shù)變量oldHandler
oldHandler = errorHandler; //把errorHandler賦給oldHandler,errorHandler應該也是個函數(shù)變量
errorHandler = function; //把參數(shù)function賦給errorHandler
return oldHandler; //返回函數(shù)變量oldHandler的值
}
補充一下:
通過typedef可以簡化這個函數(shù)的形式:
typedef void (*ErrHdlr)(int, char_t *);
然后這個函數(shù)可以簡化成:
ErrHdlr errorSetHandler(ErrHdlr function)
{
ErrHdlr oldHandler;
oldHandler = errorHandler;
errorHandler = function;
return oldHandler;
}
這樣是不是就很直觀了
顧名思義,形參只是為了塑造一個函數(shù)的外形.比如max(x,y),這里x和y我們叫它形參.而我們有兩個數(shù)a=10,b=8,把a和b賦值給max函數(shù)的話,就可以比較a和b的最大值,那么a,b在這里就叫做實參,是實際輸入的值.
你自己復制的不是很清楚嗎,解釋的很好.
形參:全稱為“形式參數(shù)”是在定義函數(shù)名和函數(shù)體的時候使用的參數(shù),目的是用來接收調用該函數(shù)時傳遞的參數(shù)。
形參的作用是實現(xiàn)主調函數(shù)與被調函數(shù)之間的聯(lián)系,通常將函數(shù)所處理的數(shù)據(jù),影響函數(shù)功能的因素或者函數(shù)處理的結果作為形參。
實參:全稱為"實際參數(shù)"是在調用時傳遞給函數(shù)的參數(shù),即傳遞給被調用函數(shù)的值。
實參可以是常量、變量、表達式、函數(shù)等, 無論實參是何種類型的量,在進行函數(shù)調用時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應預先用賦值,輸入等辦法使實參獲得確定值。
擴展資料:
形參和實參的特點:
1、形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數(shù)內部有效。函數(shù)調用結束返回主調用函數(shù)后則不能再使用該形參變量。
2、實參可以是常量、變量、表達式、函數(shù)等,無論實參是何種類型的量,在進行函數(shù)調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數(shù)獲得確定值。
3、實參和形參在數(shù)量上,類型上、順序上應嚴格一致,否則就會發(fā)生類型不匹配的錯誤。
4、在一般傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數(shù)調用過程中,形參值發(fā)生改變,而實參中的值不會變化。而在引用調用的機制當中是將實參引用的地址傳遞給了形參,所以任何發(fā)生在形參上的改變實際上也發(fā)生在實參變量上。
參考資料來源:百度百科-形參
參考資料來源:百度百科-實參
函數(shù)的參數(shù)分為形參和實參兩種。
形參出現(xiàn)在函數(shù)定義中,在整個函數(shù)體內都可以使用,離開該函數(shù)則不能使用。實參出現(xiàn)在主調函數(shù)中,進入被調函數(shù)后,實參變量也不能使用。
形參和實參的功能是作數(shù)據(jù)傳送,發(fā)生函數(shù)調用時,主調函數(shù)把實參的值傳送給被調函數(shù)的形參從而實現(xiàn)主調函數(shù)向被調函數(shù)的數(shù)據(jù)傳送。
舉個例子:
定義一個函數(shù)s=f(a,b),功能是將a和b的差賦值給s,那么,a和b就是這個函數(shù)的兩個參數(shù)。
擴展資料:
C語言的參數(shù)傳遞方式
方法有3種方式:值傳遞、地址傳遞、引用傳遞
tips:
被調用函數(shù)的形參只有函數(shù)被調用時才會臨時分配存儲單元,一旦調用結束占用的內存便會被釋放
值傳遞和地址傳遞,傳遞的都是實參的一個拷貝
C語言中實參和形參之間的數(shù)據(jù)傳遞是單向的“值傳遞”,單向傳遞,只能由實參傳給形參,反之不行
輸出格式并沒有選擇%p而是選擇了%d,因為十進制的數(shù)看起來更直觀。
值傳遞
如果只是傳遞值的話:
#include stdio.h
//值傳遞傳值
void swap( int x, int y);
int main()
{
int a=2,b=3;
printf("before:實參為a,b\na=%d,地址為%d\nb=%d,地址為%d\n\n",a,a,b,b);
swap(a,b);
printf("after:實參為a,b\na=%d,地址為%d\nb=%d,地址為%d\n\n",a,a,b,b);
return 0;
}
void swap(int x,int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf("inside:形參為x,y\nx=%d,地址為%d\ny=%d,地址為%d\n\n",x,x,y,y);
}
形參就是形式參數(shù),用一個變量代表大家。實參就是實際參數(shù),用一個 確切的數(shù)值代替形式參數(shù),可以是表達式。實際參數(shù)與形式參數(shù)的參數(shù)個數(shù)、類型和順序都應一樣,如果不一樣的話,系統(tǒng)會強制轉換,這樣會造成數(shù)據(jù)的丟失。實 參向形參的傳遞是值的傳遞。
這個值就是對實參的表達式進行計算的結果,它可以是常量值、變量值、數(shù)組元素、函數(shù)值等。如果實參是數(shù)組名了,那么它傳送的就是地址的值了。比如:
double power(double x ,int n)定義一個雙精度參數(shù)
power(3.0,5) 調用
x n 是形參,3.0,5是實參。如果上面定義的是整形 double power(int x ,int n),下面調用的是power(3.3,5)那么實參中3.3會被轉換成3,一部分數(shù)據(jù)丟失了。
形參:全稱為"形式參數(shù)"是在定義函數(shù)名和函數(shù)體的時候使用的參數(shù),目的是用來接收調用該函數(shù)時傳如的參數(shù).
實參:全稱為"實際參數(shù)"是在調用時傳遞個該函數(shù)的參數(shù).
形參和實參的類型必須要一致,或者要符合隱含轉換規(guī)則,
當形參和實參不是指針類型時,在該函數(shù)運行時,形參和實
參是不同的變量,他們在內存中位于不同的位置,形參將實
參的內容復制一份,在該函數(shù)運行結束的時候形參被釋放,
而實參內容不會改變.
而如果函數(shù)的參數(shù)是指針類型變量,在調用該函數(shù)的過程
中,傳個函數(shù)的是實參的地址,在函數(shù)體內部使用的也是
實參的地址,即使用的就是實參本身.所以在函數(shù)體內部
可以改變實參的值.
給你一個很簡單的例子:
int f(int b) /*b為形參*/
{ return b;}
main()
{int a=1;
printf("%d",f(a));/*a為實參*/
}