这个指针符号是什么意思?

时间:2012-10-05 04:57:08

标签: c

#define START ((void (**)(int)) 0x0fff)

*START = &fun_foo();

我以前没见过这个。这里发生了什么? void(**)(int)是函数指针吗?

2 个答案:

答案 0 :(得分:3)

void (**)(int)是指向函数的指针,该函数接受int并且不返回任何内容。

因此START是函数指针的指针,而*START是实际的函数指针,它被设置为指向fun_foo

答案 1 :(得分:1)

在您的情况下,START是指向函数指针的指针(位于固定地址0x0fff)。

但正如我在this answer中建议的那样,出于可读性原因,您可能希望使用typedef来表示该指向函数的签名。