gpt4 book ai didi

c - C 中的函数指针如何工作?

转载 作者:行者123 更新时间:2023-11-30 16:58:21 25 4
gpt4 key购买 nike

我最近对 ​​C 中的函数指针有了一些经验。

因此,按照回答自己问题的传统,我决定对非常基础的知识进行一个小总结,以供那些需要快速深入了解该主题的人使用。

最佳答案

C 中的函数指针

让我们从一个我们将指向的基本函数开始:

int addInt(int n, int m) {
return n+m;
}

首先,让我们定义一个指向函数的指针,该函数接收 2 个 int 并返回一个 int:

int (*functionPtr)(int,int);

现在我们可以安全地指向我们的函数:

functionPtr = &addInt;

现在我们有了一个指向该函数的指针,让我们使用它:

int sum = (*functionPtr)(2, 3); // sum == 5

将指针传递给另一个函数基本上是相同的:

int add2to3(int (*functionPtr)(int, int)) {
return (*functionPtr)(2, 3);
}

我们也可以在返回值中使用函数指针(尽量跟上,它会变得困惑):

// this is a function called functionFactory which receives parameter n
// and returns a pointer to another function which receives two ints
// and it returns another int
int (*functionFactory(int n))(int, int) {
printf("Got parameter %d", n);
int (*functionPtr)(int,int) = &addInt;
return functionPtr;
}

但是使用typedef要好得多:

typedef int (*myFuncDef)(int, int);
// note that the typedef name is indeed myFuncDef

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

关于c - C 中的函数指针如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38913066/

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