C 中的函数调用和指向函数的指针 [关闭]

问题描述 投票:0回答:1

以下是 c 中的代码片段,gcc 作为编译器 v:12.

有比较两个字符串的功能

int compareEmployee(Emp* e1,Emp* e2)

另一个函数将指向函数的指针作为参数。

Node* getnode(Linkedlist* ls,COMPARE com,void* data)

最后我们可以定义一个指针并赋值给函数。

typedef int (*COMPARE)(void *
,void *
);

因此作者使用了另一种调用函数的形式

Node* node = getnode(&list,(int(*)(void *, void *))compareEmployee, data);

我不完全理解第二个论点。这是定义函数内联指针而不将其分配给变量的另一种形式吗?

语法到底是怎样的

它看起来像一个匿名指针,指向一个已知函数,其中需要确切的签名。

c function pointers
1个回答
0
投票

这只是一个转换运算符 -

(int(*)(void *, void *))compareEmployee
将表达式转换为给定类型,在这种情况下,
compareEmployee
被转换为
int(*)(void *, void *)
类型。

以这种方式转换函数是未定义的行为,尽管在这种情况下您可能会逃避它,因为参数的大小相同。

© www.soinside.com 2019 - 2024. All rights reserved.