C中的“void (*f)(void)”是啥意思
Posted
技术标签:
【中文标题】C中的“void (*f)(void)”是啥意思【英文标题】:what does " void (*f)(void) " in C meanC中的“void (*f)(void)”是什么意思 【发布时间】:2017-11-07 21:35:06 【问题描述】:谁能用C解释这行代码:
void (*f)(void)= &fs ;
我试图在谷歌中寻找解释,但我没有找到任何相关信息。
【问题讨论】:
了解函数指针。 这是一个函数指针。 具体来说,一个指向不带参数且不返回任何内容的函数的指针。现在您知道它是一个函数指针,这应该有助于优化您的 Google 搜索。 对于指向函数的指针,void (*f)(void) = &fs;
与 void (*f)(void) = fs;
相同
【参考方案1】:
它定义了一个变量'f',它是一个指向函数'fs'的函数指针。 'fs' 是一个不带参数的函数,不返回任何内容,因此它可能看起来像:
void fs(void) printf("in fs");
如果您在问题行之后运行以下代码
(*f)();
它会调用'fs',你会得到一个打印出来的“in fs”
【讨论】:
我们不知道fs
是这样的功能。我们只知道应该是这样。
True klutt - 当涉及到指针时,C 将编译您提供的任何内容,因此程序员需要确保函数签名相同(或足够相似)。理想情况下,“f”和“fs”将具有相同的签名,否则行为变得非常特定于环境。【参考方案2】:
我在 cdecl 中写了同样的声明,它向我展示了
将
f
声明为指向函数(void)
的指针,返回void
。
就是这样!!换句话说,在这里,我们将类型变量f
定义为一个指向函数的指针,它不接受任何参数((void)
)并返回一个void
。我们用另一个函数fs
的地址初始化变量,这样f
指向fs
函数,可以用来调用/调用fs
。
【讨论】:
以上是关于C中的“void (*f)(void)”是啥意思的主要内容,如果未能解决你的问题,请参考以下文章