函数指针的介绍

void (*test)(void);

这就是一个函数指针;

// 函数指针变量名:test

void test_1(void)

{

    printf("Hello, World!\n");

}

void test_2(void)

{

    printf("good day\n");

}

我这里有两个函数

正常调用就直接void test_1();   void test_2();对吧。

我这里有指针就不一样了

test = test_1;

    test();

就是调用void test_1(); 这样是不是看着多次一举。其实不是的因为更多的时候我们写函数指针的时候void (*test[])(void);我们可以定义一个列表作为指针变量名这个时候我们就可以把同一类型的函数放一起了这样就很方便test[0]=test_1,test[1]=test_2;

或者直接这样void (*test[])(void) = {test_1,test_2};

有什么好处呢比如 替换分支语句(少写 if/switch)不用 if(cmd==1) test_1(),直接用下标调用。

补充一个自行理解

// int     void (*)(void);

// int a   void (*a)(void);

// typedef int intt           typedef void (*cb_t)(void);

//intt a 等价于  int a         // cb_t  a; 等价于  void (*a)(void);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值