2 回答

TA貢獻(xiàn)1828條經(jīng)驗 獲得超3個贊
參數(shù)void*(*)(void*)是一個函數(shù)指針,前面的void為返回值類型,后面的void*為參數(shù)類型。
指向函數(shù)的指針變量的一般定義形式為:數(shù)據(jù)類型(*指針變量名)(函數(shù)參數(shù)列表)
函數(shù)名是可以缺省的,作為參數(shù)傳遞的時候會去調(diào)和void*(*)(void*)這個類型相匹配的函數(shù)的。
例如:
int func(int x); /* 聲明一個函數(shù) */
int (*f) (int x); /* 聲明一個函數(shù)指針 */
f=func; /* 將func函數(shù)的首地址賦給指針f */
或者使用下面的方法將函數(shù)地址賦給函數(shù)指針:
f = &func;
賦值時函數(shù)func不帶括號,也不帶參數(shù),由于func代表函數(shù)的首地址,因此經(jīng)過賦值以后,指針f就指向函數(shù)func(x)的代碼的首地址。
擴展資料:
“函數(shù)指針”本身首先應(yīng)是指針變量,只不過該指針變量指向函數(shù)。這正如用指針變量可指向整型變量、字符型、數(shù)組一樣,這里是指向函數(shù)。如前所述,C在編譯時,每一個函數(shù)都有一個入口地址,該入口地址就是函數(shù)指針?biāo)赶虻牡刂贰?/p>
有了指向函數(shù)的指針變量后,可用該指針變量調(diào)用函數(shù),就如同用指針變量可引用其他類型變量一樣,在這些概念上是大體一致的。函數(shù)指針有兩個用途:調(diào)用函數(shù)和做函數(shù)的參數(shù)。
添加回答
舉報