这个表达式是什么意思:void* (*fct)(void*(*)(void*), void*)?

3
我知道例如 e.g.是什么意思。
void *(*myFuncName)(void*)

这是一个函数指针,它接受并返回void*

这是一个接受两个参数的指针吗? 一个返回void*类型的另一个函数和一个void*指针? 我只是猜测..


显然,这将是一个指向函数的指针,它以函数指针作为参数(如果你把所有东西都放在正确的位置)。 - user3386109
如果标题中的decl是实际问题,它将声明一个名为fct的变量,该变量是指向返回void*并且接受两个参数的函数的指针:第一个参数是指向返回void*并且接受单个void*参数的函数的指针,第二个参数是void*类型。假设在接下来的几秒钟内标题不会改变。 - WhozCraig
4个回答

4
void* (*fct)(void*(*)(void*), void*);  

声明一个指向函数的指针 fct

  • 返回类型为void *
  • 第一个参数类型为指向一个函数的指针,该函数接受一个void *类型的参数并返回一个void *类型的值
  • 第二个参数类型为void *

1
   void* (*fct)(void*(*)(void*), void*)
// 44444  2111 333333333333333333333333

fct(1)是一个指向返回指针的函数(4)的指针(2)。

(*)函数参数为void *(*)(void *)void *

void *(*)(void *)是一个指向需要指针参数并返回指针的函数的指针

void *是一个指针


0

cdecl.org和我的编译器都认为这是语法错误。有更多的右括号比左括号。

一个名为x的函数指针,返回类型为void *,并且接受两个类型为void *的参数,看起来像:

void *(*x)(void *, void *);

0

向左阅读:

myFuncName是一个指针。它指向什么?

向右阅读:

myFuncName是一个指向一个函数的指针,该函数接受两个参数,其中一个是函数指针(具有一个void*参数并返回void*,类似于myFuncName),另一个是类型为*void*,返回void*。这个函数返回什么?

向左阅读:

myFuncName是一个指向一个函数的指针,该函数接受两个参数(见上文)并返回void*

正如https://stackoverflow.com/users/47453/bill-lynch所指出的那样,只要您的语法正确,cdecl也会告诉您相同的信息。

最好的问候 安德烈亚斯


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接