当前位置: 首页 > news >正文

C语音学习---函数指针

目录

1. 函数指针解析

2. 自定义实现(函数指针赋值)


利用下面一段例子来解析:

int (*set_slave)(modbus_t *ctx, int slave);

1. 函数指针解析

  • set_slave 是一个 函数指针,指向一个函数。

  • 该函数接受两个参数:

    • modbus_t *ctx:Modbus 上下文(context),存储 Modbus 通信的配置信息(如串口、IP 地址等)。

    • int slave:要设置的 从站地址(Slave ID,范围通常是 1~247)。

  • 返回 int

    • 0 表示成功。

    • -1 表示失败(如无效的 Slave ID)。

2. 自定义实现(函数指针赋值)

如果你想自己实现一个 set_slave 函数并赋值给函数指针:

#include <stdio.h>
#include <stdint.h>typedef struct modbus_t modbus_t;  // 假设 modbus_t 是一个结构体// 自定义 set_slave 实现
int my_set_slave(modbus_t *ctx, int slave) {if (slave < 1 || slave > 247) {printf("Error: Invalid slave ID %d (must be 1-247)\n", slave);return -1;}printf("Slave ID set to %d\n", slave);return 0;
}int main() {// 定义函数指针并赋值int (*set_slave)(modbus_t *, int) = my_set_slave;modbus_t ctx;  // 假设已经初始化int slave_id = 10;// 调用函数指针int ret = set_slave(&ctx, slave_id);if (ret == -1) {printf("Failed to set slave ID\n");}return 0;
}

 

 

相关文章:

  • MyBatis源码解读4(2.3、MyBatis运行流程)
  • 【ajax基础】
  • openjdk底层汇编指令调用(一)——汇编指令及指令编码基础
  • 设计模式之工厂模式(二):实际案例
  • 医院药品管理系统(准备工作)
  • 『 测试 』测试基础
  • [Java实战]Spring Boot 整合 Thymeleaf (十)
  • 经典工具箱、常见工具、软件合集【免费无广告】
  • openharmony系统移植之gpu mesa3d适配
  • 信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(十六)
  • 语音合成之十三 中文文本归一化在现代语音合成系统中的应用与实践
  • MySQL索引详解(下)(SQL性能分析,索引使用)
  • Baklib内容管理平台的核心组成是什么?
  • Go语言安装proto并且使用gRPC服务(2025最新WINDOWS系统)
  • Babel 基础使用指南:从安装到编译的完整流程
  • 操作系统: 第三章节 :中断和处理机调度
  • Python Day 22 学习
  • 基于Dify实现对Excel的数据分析
  • 容器技术 20 年:颠覆、重构与重塑软件世界的力量
  • 每日一题洛谷P8615 [蓝桥杯 2014 国 C] 拼接平方数c++
  • 哈佛新论文揭示 Transformer 模型与人脑“同步纠结”全过程!AI也会犹豫、反悔?
  • 中美发布日内瓦经贸会谈联合声明达成关税共识,外交部回应
  • 均价19.5万元/平米!上海徐汇滨江地王项目“日光”,销售额近70亿元
  • 母亲节书单|关于生育自由的未来
  • 航行警告:渤海海峡黄海北部执行军事任务,禁止驶入
  • 铁肩担道义,历史鉴未来——中共中央政治局委员、外交部长王毅谈习近平主席对俄罗斯进行国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典