你好 friend ,
How can I use an array of function pointers?
如果我们看到上面的链接,它会告诉我们函数指针是如何工作的。
现在的问题是为什么要选择函数指针?
为什么我不能直接使用函数调用?
使用函数指针有什么好处?
例如
enum{a, b, c};
void A();
void B();
void C();
void (*fun[3])() = {A, B, C};
Now when I need to call a function I am doing like,
fun[a](); // This calls function A
// And so on...
同样可以在函数调用中完成
比如当我需要调用函数 A、B 或 C 时。 直接我就可以了
A();
B();
or
C();
那为什么是函数指针
呢?
最佳答案
使用函数指针的原因有很多,特别是在 C 语言中做一些通用的事情。
您将看到它们被使用的主要地方是作为函数的参数。例如函数 bsearch
,它使用一个作为函数指针传递的比较函数来比较项目并对数据进行排序:
void *bsearch(const void *key, const void *base,
size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
这使得 bsearch
成为通用的并且可以对任何类型的数据进行排序,因为只有那个比较函数必须知道数据的类型。
另一个与避免多次检查有关。即。
void makePizza(void) { }
void bakeCake(void) { }
iWantPizza = 1;
...
if (iWantPizza)
makePizza();
else
bakeCake();
/* want to call the same function again... */
if (iWantPizza)
makePizza();
else
bakeCake();
..
/* alternative */
void (*makeFood)(void) = iWantPizza ? makePizza : bakeCake;
makeFood();
/* want to call the same function again... */
makeFood();
关于c - 函数指针与函数调用有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10877150/