gpt4 book ai didi

C - 函数返回指向函数的指针

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:33 25 4
gpt4 key购买 nike

函数返回指向另一个函数的指针(它可能再次返回指向某个第三方函数等的指针)的正确 C 语法是什么?我知道我们可以将一个函数定义为另一个函数内部的局部变量(但我们需要知道地址,否则它是无用的):

int*(*a)(int) = (void*)0;

这是局部变量 a表示具有 int 的函数作为参数并返回指向 int 的指针, 而函数的地址是 0 .我怎样才能有一个返回的函数,而不是指向 int 的指针? , 指向需要 char 的函数的指针作为参数并返回指向 int 的指针?这是我试过的:

int*(*)(char)(*a)(int) = (void*)0;

但是,这是一个语法错误。有没有办法做到这一点,或者,唯一的办法就是返回 void*然后再次施放它以发挥作用?

编辑

我不仅仅在寻找有效的解决方案。我知道可以使用 typedef 来完成或者只是通过返回一个通用指针然后转换为另一个函数。但是,我正在为 C 编写代码荧光笔,我想涵盖 ISO C 定义的所有情况,所以我想知道 ISO C 是否允许双重返回函数,如果是,正确的语法是什么,如果不是,可以吗在文档的某处找到?

最佳答案

您可以使用 typedef 来简化它(并确保您可以在一周后真正理解代码):

typedef int*(*FuncA)(int);
typedef FuncA(*FuncB)();

FuncB a = (void*)0;

显然使用比我在这里使用的更具描述性的名称。

关于C - 函数返回指向函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43668675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com