我不熟悉以下struct
struct fp {
int (*fp)();
}
什么是int (*fp)()
?我知道这是一个integer
,而*fp
是一个指针,但是我不明白(*fp)()
中括号的含义。
答案 0 :(得分:4)
fp
是带有空参数列表的函数的指针。
即
int myfunc() //define function
{
return 0;
}
struct fp //define structure
{
int (*fp)();
} mystruct;
mystruct.fp = &myfunc; //assign function pointer to structure element
int a = mystruct.fp(); //Call function through pointer
有许多读取C声明的方法,在某些情况下可能非常复杂。开始阅读https://parrt.cs.usfca.edu/doc/how-to-read-C-declarations.html。
您可以在Google上搜索“如何读取c声明”,以获取更深入的解释和更多提示。
正如Swordfish所指出的那样,使用空参数列表暗示了关于函数定义的其他明智之处,这可能值得深究。有关功能定义的要点,请参阅下面的Swordfish评论。我只会引用§6.11.6函数声明符(属于§6.11未来语言说明):
带空括号的函数声明符的使用(不是 原型格式参数类型声明符)是过时的 功能。
答案 1 :(得分:2)
它是function pointer。如果您是初学者,它们功能强大且难以引起您的注意。
答案 2 :(得分:1)
它是变量fp
的声明,它是一个pointer to a function,它返回一个整数并接受一个unspecified list of arguments。
答案 3 :(得分:1)
这是一个包装功能指针的结构。