函数指针/函数指针数组

指针函数

char* func(char *str)
{
    str = "Hello world";
    return str;
}

void main()
{
    char *buf;
    char str[20];
    buf=func(str);
    printf("%s\n", buf);
}

函数指针

int add(int a, int b)
{
    return a+b;
}

int(*func)(int,int); //有两个int参数、返回类型为int的函数指针 

void main()
{
    int result;
    func=add; //add的地址给指针
    result = func(3,2);
    printf("%d\n", result);
}

typedef定义函数指针

int add(int a, int b)
{
    return a + b;
}

typedef int(*INIT_FUN)(int, int);//声明函数指针类型

//定义一个函数,参数是op,返回是指针
INIT_FUN func(char op)
{
    if (op == '+')
        return add;
}

void main()
{
    int result;
    INIT_FUN func2 = add; //用法1
    result = func2(2, 3);
    printf("%d\n", result);
   
    result = func('+')(1, 2); //用法2
    printf("%d\n", result);
}

函数指针数组

int add(int a, int b)
{
    return a + b;
}
int sub(int a, int b)
{
    return a - b;
}


typedef int(*INIT_FUN)(int, int);

INIT_FUN fun[]=
{
    [0x01] = add,
    [0x02] = sub,
};

void main()
{
    int result;
    result = fun[1](3, 2);
    printf("%d\n", result);
    result = fun[2](3, 2);
    printf("%d\n", result);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值