凡亿教育-大康
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | ARM开发:3秒区分函数指针与指针函数
ARM开发:3秒区分函数指针与指针函数

函数指针与指针函数仅一字之差,却是ARM开发中的易错点!掌握这个快速区分法,告别混淆!

1.png

一、本质差异:变量 vs 函数

函数指针

本质:存储函数地址的指针变量

声明:返回值类型 (*指针名)(参数列表)

例:int (*fp)(int) → 指向返回int的函数

指针函数

本质:返回指针的函数

声明:返回值类型* 函数名(参数列表)

例:int* func(int) → 返回int指针的函数

二、快速区分三板斧

看符号位置

函数指针:*在指针名前且被括号包裹 → (*fp)(int)

指针函数:*在返回类型后 → int* func()

判用途场景

函数指针:用于回调、中断处理、状态机(如STM32中断向量表)

指针函数:动态内存分配、返回数据地址(如malloc封装函数)

调用方式对比

函数指针:(*fp)(参数) → 需解引用调用

指针函数:func(参数) → 直接调用,返回值赋给指针

三、ARM开发典型应用

函数指针实战

// 中断服务例程跳转

typedef void (*ISR_Handler)(void);

ISR_Handler vec_table[] = {Reset_Handler, NMI_Handler};

vec_table[0](); // 通过指针调用复位处理函数

指针函数实战

// 动态分配内存并返回指针

uint32_t* alloc_buffer(size_t size) {

    return (uint32_t*)malloc(size * sizeof(uint32_t));

}

uint32_t* buf = alloc_buffer(1024); // 获取内存块首地址


本文凡亿教育原创文章,转载请注明来源!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论