【问题标题】:What does this pointer notation mean?这个指针符号是什么意思?
【发布时间】:2012-10-05 04:57:08
【问题描述】:
#define START ((void (**)(int)) 0x0fff)

*START = &fun_foo();

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

【问题讨论】:

    标签: c


    【解决方案1】:

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

    所以START 是指向函数指针的指针,*START 是设置为指向fun_foo 的实际函数指针。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-25
        • 2014-01-19
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        • 2012-11-03
        • 2016-10-10
        相关资源
        最近更新 更多