原标题:《C与指针》读书笔记九

指针之所以在C语言中占据很大分量,是因为指针有很大的灵活性。指针以结构体结合确实为程序的编写提供了一把锋利无比的宝剑。在有些资料上介绍结构体是多种数据集合,也就是一个结构体可以包含若干种不同类型的数据。不同类型的数据恰可以和客观事物的不同属性结合,用于描述客观事物非常高效方便。

本文引用地址:http://www.eepw.com.cn/article/201608/295845.htm#define RTX_MAX 50

#define UART_TIME_LIMT 5

typedef struct UART_TYPE

{

unsigned char RX_buf[RTX_MAX];

unsigned char RX_count;

unsigned char TX_buf[RTX_MAX];

unsigned char TX_count;

unsigned char TX_Len;

unsigned char flag;

unsigned char timer; //判断一帧数据是否结束判断

}UART_TYPE;

enum COM_FLAGE {NO_REC_ONE_FRAM,REC_ONE_FRAM};

以上是一个串口管理信息的数据结构,RX_buf[RTX_MAX]、TX_buf[RTX_MAX] 是发送接收数据缓冲。RX_count 、TX_count接收发送数据计数器。TX_Len 发送数据总长度。flag数据接收完成标志。timer接收数据起始计数器。

结构体定义相当于一个数据集合模板。当需要该数据结构时只需声明一个即可。

UART_TYPE UART1 = {

{0,0},

0,

{0,0},

0,

0,

NO_REC_ONE_FRAM,

0

};

在编程中管理也非常方便,如果需要为串口设计一个数据使用,UART_TYPE UART;即可实现。在程序中使用也非常方便,比如:

//读取多个寄存器

if(UART1.RX_buf[1]==0x03)

{

if(readMuliReg( )==0)

{

UART1_Clear_Buf( );

return;

}

else

{

goto RETURN_ERR;

}

}

指针与结构体的结合,在解析MODBUS协议时非常高效。借用一位同事话是“对内存格式化”。也就是用结构体指针对MODBUS报文分析。

//读多个寄存器

typedef struct MODELBUS03CMD

{

unsigned char targetADD; //目标地址

unsigned char CMD; //命令字

unsigned int regADD; //寄存器地址

unsigned int regNum; //寄存器数量

}MODELBUS03CMD;

这是一个03命令的报文头结构。在程序使用方法是这样

MODELBUS03CMD *pModelBus03;

pModelBus03 = UART1.RX_buf;

REGNumber = pModelBus03->regNum;

regADD = pModelBus03->regADD;

使用pModelBus03指针指向接收数据缓冲区,很容易提取了regNum寄存器数量以及regADD寄存器地址。返回搜狐,查看更多

责任编辑:

c语言指针读书笔记,《C与指针》读书笔记九相关推荐

  1. 【C语言学习笔记】26. 指针(3)指向指针的指针、传递指针给函数

    前言 指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链.通常,一个指针包含一个变量的地址.当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置. ...

  2. 《c语言从入门到精通》看书笔记——第10章 指针

    1.地址与指针 地址:就是内存区中对每个字节的编号 指针:可以看作是内存中的一个地址.在程序中定义了一个变量,在进行编译时就会给该变量在内存中分配一个地址,通过访问这个地址可以找到相应的变量,这个变量 ...

  3. C++_指针的定义使用_指针所占内存空间_空指针_野指针---C++语言工作笔记023

    然后我们再来学这个指针,指针是c系列语言中的,重要的部分,在其他的语言里没有, 所以也难一点. 可以看到通过 int * p; 定义一个指针,指针就是指向一个地址. 然后有个 int a =10; 可 ...

  4. C语言学习笔记----4(指针)

    文章目录 指针深入介绍 指针类型 二级指针 字符指针 指针数组 数组指针 函数指针 函数指针数组 函数指针数组指针 回调函数 总结 指针深入介绍 众所周知,亚里士多德1撑起了古希腊科学.哲学的半壁江山 ...

  5. C语言学习笔记---数组和指针的区别

      在平时使用数组和指针的时候,感觉他们的使用很类似.那么数字和指针在使用的过程中到底有什么区别呢?   下面通过一个例子来简单分析一下. char str1[] = "abcdef&quo ...

  6. 【鹏哥C语言网课笔记】初识指针

    目录 一.指针是什么? 二.指针和指针类型 三.野指针 指针未初始化 指针越界 指针指向的空间释放 如何规避野指针 四.指针运算 指针+-整数 指针-指针 指针的关系运算 五.指针和数组 六.二级指针 ...

  7. 【C语言学习笔记】函数指针的定义和用法

    函数指针的定义和用法 先回顾下数组的储存方式,当你在程序中定义了一个数组,那么系统就会自动根据你的数组类型和数组长度申请一块储存空间给你.而且数组名储存的地址刚好就是申请的这块储存空间的首地址,这也是 ...

  8. C语言复习篇之数组与指针

    C语言复习篇之数组与指针 学习了一段时间的嵌入式linux了,学习中有很多的东西需要总结,有经验有教训,我觉得把他写下来会更好,就当做是一种笔记的形式,记录学习中的点点滴滴,不仅仅自己可以经常复习,也 ...

  9. c语言 数组指针,C语言数组名及指向数组指针的小结

    相信不少的C语言初学者都知道,数组名相当于指针,指向数组的首地址,而函数名相当于函数指针,指向函数的入口地址. 现在有这样一个问题,如果对数组名取地址,那得到的会是什么呢?很多人立刻会想到:给指针取地 ...

  10. c语言中变量加1,c语言中,指针加1的情况.指针变量详细介绍

    指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址. 要搞清一个指针需要搞清指针的四方面的内容: 指针的类型, 指针所指向的 类型, 指针的值或者叫指针所指向的内存区, 还有指针本身所占 ...

最新文章

  1. Python, C++和Java代码互翻,Facebook开发首个自监督神经编译器
  2. Windows下一个curl使用
  3. linux图形界面编程基本知识
  4. 什么是 lnmp 实现原理。
  5. 九、WebService中文件传输
  6. python运维工程师招聘_【python自动化运维工程师工资】图灵学院2020年python自动化运维工程师工资待遇-看准网...
  7. SmartPDA图片
  8. 转载一篇关于curl的文章
  9. 【POJ - 1556】The Doors (计算几何,线段相交)
  10. java shiro security_安全框架Shiro和SpringSecurity的比较
  11. linux脚本硬盘,Linux mount挂载和卸载硬盘脚本分享
  12. 德国 IT 薪酬大揭秘!
  13. 应用phpexcel导出excel文件后打不开的问题解决方法
  14. delphi三层架构中注册服务器
  15. css 这个特性,你敢信
  16. 攻破 JAVA NIO 技术壁垒( 下 ) 2017-09-02 ImportNew (点击上方公众号,可快速关注) 来源:朱小厮, blog.csdn.net/u013256816/articl
  17. 什么是Civil3D
  18. 记录 | Latex 双栏排版插入图片后图片太大的问题 一种解决方案
  19. 最新唯美520表白纪念网页HTML源码+UI超级好看
  20. 10 大话设计模式C++实现之模板方法模式

热门文章

  1. linux dmidecode命令,linux下dmidecode命令获取硬件信息
  2. 编写一个简单的生日快乐APP
  3. 苹果13的home键怎么调出来
  4. Ubuntu系统下Git版本控制使用教程|1-6
  5. 更换主板后删除旧主板网卡配置的IP地址信息
  6. C++实现字符串加密算法
  7. 财会计算机基础知识,会计的基础知识大全
  8. 常系数非齐次线性微分方程(两种常见形式)
  9. C语言 数据结构 栈的应用(括号匹配)
  10. iOS之深入解析静态Pod与动态Pod