gpt4 book ai didi

c - 返回函数指针的函数声明

转载 作者:太空狗 更新时间:2023-10-29 15:22:21 25 4
gpt4 key购买 nike

阅读时this文章中,我遇到了以下函数指针声明。我没有使用过这样的声明,但我的解释方式是:取消引用时 functionFactory 的返回值是一个接受 2 个整数并返回一个整数的函数。

int (*functionFactory(int n))(int, int) {
printf("Got parameter %d", n);
int (*functionPtr)(int,int) = &addInt;
return functionPtr;
}

我很想知道这样的声明是否特定于此案例,或者是否有我错过的通用方法。

我的意思是我们通常会看到这样的声明

<returnType> funcName(listOfArgs){}

这个看起来不合时宜。有人可以详细说明一下吗。

最佳答案

we normally see declarations like <returnType> funcName(listOfArgs){}

是的,但在这种情况下,返回类型是指向函数的指针,这实际上是定义此类函数的一种可能方式:

int (*functionFactory(int n))(int, int) {
...
}

幸运的是,您可以使用 typedef 为任何类型创建别名这使它变得更加简单:

typedef int (*FncPtr)(int,int);

FncPtr functionFactory(int n) {
printf("Got parameter %d", n);
FncPtr functionPtr = &addInt;
return functionPtr;
}

这更容易阅读,也更容易理解。函数原型(prototype)的形式就像你期望的那样:它是一个名为 functionFactory 的函数。接受 1 个 int 类型的参数并返回 FncPtr :)

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

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