记录一下函数指针数组,挺有意思的

函数的声明:

void a_handle(uint8_t data8,uint16_t data16)
{

}

 指针函数的声明:

void *b_handle(uint8_t data8,uint16_t data16)
{

}

函数指针

void (* fun_p)(uint8_t data8,uint16_t data16);

fun_p  = & a_handle;  //指针和函数a的形成和返回值必须是一样,
void *(* funb_p)(uint8_t data8,uint16_t data16);

funb_p  = & b_handle;  //指针和函数a的形成和返回值必须是一样,


函数指针数组


void (*func_table[])(uint8_t,uint16_t)=
{
	a_handle,
};

个人理解:

void *b_handle(uint8_t data8,uint16_t data16)容易理解成指针,其实这是函数,中间的*优先和void结合声明成函数返回值了,要想声明成指针,加一个(),让*和变量先结合,声明成指针,

函数指针就成了void (*b_handle)(uint8_t data8,uint16_t data16);
如果要变成函数指针数组,一般是添加[]表示数组,那就在变量的后面添加[];
void (*b_handle[])(uint8_t data8,uint16_t data16);这就成了函数指针数组。

比较容易理解错误的地方

指针函数是返回指针的函数;本质是一个函数,
例如void  *b_handle(uint8_t data8,uint16_t data16)

函数指针是指向函数的指针,本质是一个指针;
例如void  (*b_handle)(uint8_t data8,uint16_t data16)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值