![](/img/trans.png)
[英]How to use C++ Function Pointer as Parameter to a C Funcion Pointer/Callback
[英]How to use the pointer of a function in C? (No C++)
正如標題所說,我如何在C中使用函數的指針? 我可以只獲取函數名的地址並將其傳遞給另一個函數; 然后取消引用並調用它?
非常感謝。
如果您知道函數地址,那么是。 例如:
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
int operation(int (*op)(int, int), int a, int b)
{
return op(a, b);
}
然后就這樣稱呼它:
printf("%d\n", operation(&add, 5, 3)); // 8
printf("%d\n", operation(&sub, 5, 3)); // 2
你甚至可以做一些數組技巧:
int op = 0;
int (*my_pointer[2])(int, int) =
{
add, // op = 0 for add
sub // op = 1 for sub
};
printf("%d\n", my_pointer[op](8, 2)); // 10
很好地回答你的問題,C中有一個規定可以滿足這種需求,即“ 函數指針 ”。
但你必須遵循一定的規則,
1)要使用函數指針調用的所有函數必須具有相同的返回類型。 2)要使用函數指針調用的所有函數必須具有相同的參數和參數類型。
例如,
int add(int,int); int sub(int,int);
對於以上兩個函數,您可以將函數指針寫為,
int(* operation)(int,int);
你可以像Flavio Torbio所描述的那樣使用它。
希望能幫助到你.....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.