2 回答

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