我想了解指向函数的指针如何工作以及如何在 C 中调用这些函数。
在这个例子中:
#include <stdio.h>
void invoked_function();
int main(void) {
void(*function)();
function = invoked_function;
function(); //First way to call invoked_function
(*function)(); //Second way to call invoked_function
return 0;
}
void invoked_function() {
printf("Hi, I'm the invoked function\n\n");
}
我使用 function();
和 (*function)();
调用函数 invoked_function
,两者都有效。
如果第一个包含invoked_function
的内存地址,第二个包含invoked_function
代码的第一个字节,为什么两者都有效?
最佳答案
这个:
function = invoked_function;
等同于:
function = &invoked_function;
因为第一个也是有效的,因为标准说这个上下文中的函数名称被转换为函数的地址。
这个:
(*function)();
是使用函数的方式(因为它是一个函数指针)。
但是,请注意:
function()
也被接受,如你所见here .
这背后没有什么黑魔法,C 是这样构造的,函数指针就是这样使用的,这就是语法。
关于c - 在 C 中使用指向函数的指针调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46022330/