使用指向C中的函数的函数调用函数

时间:2017-09-03 10:11:03

标签: c function pointers syntax

我想了解指向函数的指针是如何工作的以及如何在C中调用函数。

在这个例子中:

error C2137: empty character constant
error C2001: newline in constant

我使用#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"); } invoked_function调用函数function();,两者都有效。

如果第一个是(*function)();的内存地址,第二个包含invoked_function代码的第一个字节,为什么两者都有效?

1 个答案:

答案 0 :(得分:3)

此:

function = invoked_function;

相当于:

function = &invoked_function;

因为第一个也是有效的,因为标准表示此上下文中的函数名称被转换为函数的地址。

此:

(*function)();

是使用该函数的方法(因为它是一个函数指针)。

然而,请注意:

function()

也被接受了,你可以看到here

这背后没有黑魔法,C就像这样构造,函数指针就像这样使用,这就是语法。