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

我最近在C语言中有一些函数指针方面的经验

因此,按照回答自己问题的传统,我决定对基本知识做一个小结,供那些需要快速切入主题的人参考

C语言中的函数指针

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

int addInt(int n,int m){
返回n+m;
}

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

int(*functionPtr)(int,int);

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

函数ptr=&添加剂;

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

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

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

intadd2to3(int(*functionPtr)(int,int)){
返回(*functionPtr)(2,3);
}

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

//这是一个名为functionFactory的函数,它接收参数n
//并返回指向接收两个整数的另一个函数的指针
//它返回另一个int
int(*函数工厂(int n))(int,int){
printf(“获取参数%d”,n);
int(*functionPtr)(int,int)=&addInt;
返回函数ptr;
}

但是使用typedef要好得多:

typedef int(*myFuncDef)(int,int);
//请注意,typedef名称实际上是myFuncDef
myFuncDef函数工厂(int n){
printf(“获取参数%d”,n);
myFuncDef functionPtr=&addInt;
返回函数ptr;
}

发表评论