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)”是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

PS中的拾色器H 、S 、B 、是啥意思?

bug是啥?

C中的“静态”是啥意思?` [重复]

js 里面的 "" 是啥意思

htop中的C进程状态是啥意思?

C语言中的VOID()是啥意思