我最近在C语言中有一些函数指针方面的经验
因此,按照回答自己问题的传统,我决定对基本知识做一个小结,供那些需要快速切入主题的人参考
C语言中的函数指针
让我们从一个我们将指向的基本函数开始:
int addInt(int n,int m){
返回n+m;
}
首先,让我们定义一个指向函数的指针,该函数接收2个int
s并返回一个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;
}