指针回调函数学习笔记

本文是作者在学习蓝牙模块CC254X的BLE协议栈时,针对指针函数和回调函数的理解笔记。通过实例讲解了指针函数作为参数、指针函数调用、结构体指针函数的使用,并重点分析了从协议栈代码中提炼出的回调函数注册和调用过程。
摘要由CSDN通过智能技术生成

    在学习蓝牙模块CC254X芯片,理解蓝牙BLE协议栈例程SimpleBLECentral的时候,由于我对函数指针,回调函数等比较陌生,导致难以理解蓝牙架构流程,所以整理了从最初的指针函数,到指针函数与数组,结构体等关联的范例。

    其中,第1到第4点,在Visual C++6.0软件上编译测试过。

     第5点为蓝牙BLE协议栈例程SimpleBLECentral中浓缩精简出来的一段,以方便学习该代码中的妙用。已检测无语法错误警告,亦可在Visual C++6.0软件上编译。

1、指针函数直接作为实体函数的输入参数

#include <stdio.h>

//定义两个显示函数
void Display()
{
    printf("This is Display.\n");
}
void Show()
{
    printf("Hellow World!\n");
}

//定义一个输入为“函数指针”的函数
void test(void (* fnPerform)())
{
    fnPerform();
}

int main(void)
{
    test(Display);
    test(Show);
    return 0;
}

2、指针函数指向函数地址的具体指针调用

#include <stdio.h>

typedef void (* fnPerform_t)(int a, int b);    //  声明定义函数指针

static void add(int a, int b);                 //  声明“加函数”

fnPerform_t Testcb = add;                      //  指针函数指向“加函数”地址

int main(void)
{
	int j = 8, k = 6;
	Testcb(j,k);
    return 0;
}
//“加函数”的具体内容
static void add(int a, int b)
{
	int c = 0;
    c = a + b;
    printf ("%d=%d+%d \n",c,a,b);
}
3、函数指针指向数组函数
#include <stdio.h>

//  声明定义函数指针
typedef    unsigned short   (* SimpleTaskInfo)(unsigned char taskCnt, unsigned short event);  

//  任务函数声明
static unsigned short Task1(unsigned char a, unsigned short b);
static unsigned short Task2(unsigned char a, unsigned short b);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值