簡體   English   中英

如何在C中使用函數的指針? (沒有C ++)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM