Table of Contents

C语言函数指针


使用函数指针

#include<stdio.h>
 
//普通函数
int someFunction(int x,float y)
{
    printf("%d %f\n",x,y);
    return 0;
}
 
//接受函数的指针作为参数
void Call(int (*pF)(int,float),int x,float y)
{
    pF(x,y);
}
 
int main()
{
    //获得函数的指针,不需要&
    int (*pF)(int,float)=someFunction;
 
    //直接通过函数指针调用函数,不需要*
    pF(1,1.0f);
 
    //将函数指针作为参数传递,就和普通指针一样
    Call(pF,1,1.0f);
 
    return 0;
}

定义类型别名

#include<algorithm>
 
//定义特定类型函数指针的类型别名
typedef int (*PointerType)(int,int);
 
int main()
{
    //可以用于Lambda表达式(C++)
    PointerType someFunction=
        [](int x,int y)->int{ return x+y; };
 
    return 0;
}