全部学习汇总: https://github.com/GreyZhang/misra_c_hacking

这一次,把整个指针相关的这个章节一起看一下。

指针的类型:指向某个对象、指向一个函数、指向void、NULL类型。

指针类型转换,允许的隐式转换有:指向对象的与指向void的转换、NULL与其他的类型之间的转换。

11.1,这一条要求很简单,函数指针不能够与整形指针以外的其他的类型的指针进行转换。如果这一条不遵守,可能会导致一些未定义的行为发生。

11.2,指向对象的指针,可以进行转换的类型有:另一个同类指针、整形指针、void型指针。

11.3,这个并不是一个强制的规则要求。主要是针对指针类型和整形之间的转换,注意后面是一个整形而不是整形指针。由于嵌入式中有很多寄存器的访问,直接根据寄存器的地址来处理,因此这样的操作是不可避免的。这里的建议,主要是考虑到了这一点。不过针对其他的操作,应该尽量不要用这种方式处理。

11.4,指向不同类型对象的指针之间不能够进行相互转换,比如一个指向8bit无符号,而另一个则指向16bit无符号,两者不能够互转。这个其实是很容易理解的,涉及到多个方面:第一个是数据占用的存储范围不同;第二个是可能是完全不同的数据概念。

11.5, 转换的时候const以及volatile等修饰不能够移除。这个很容易理解,尤其是针对const的理解更加简单。原本这个就是一个只读的信息,如果是转换的时候去掉了const那么从操作概念上就变成了可写。这个从系统设计的角度来讲是说不过去的。从另一个角度来思考解读,虽然这些信息是不能够移除的,但是没有说明是不可以增加的,因此如果是增加的话可能会另做考虑。

上面是几个合规以及不合规的例子。

其实,指针的理解看上去复杂其实解读起来还是容易的。不同于前面看到的基础数据类型的转换,更多是在定义最原始的规则,指针的操作已经到了实际功能解读的层面上了。而判断实际对象之间的匹配度,其实还是很容易的。

1210_MISRA_C规范学习笔记_指针使用的规范性相关推荐

  1. 1211_MISRA_C规范学习笔记_表达式的要求

    全部学习汇总: https://github.com/GreyZhang/misra_c_hacking 12.1, 规则12.1(咨询):在表达式中,应该对C语言的运算符优先级规则有一定的限制. 关 ...

  2. Go学习笔记_环境搭建

    Go学习笔记_环境搭建 Go背景知识 go的特点(官网): Build fast, reliable, and efficient software at scale- Go is an open s ...

  3. 人力资源之选人方法学习笔记_职位胜任素质模型

    续接上篇:人力资源之选人方法学习笔记_建立科学的人才观   本篇主要讲解关于职位胜任素质模型课程的学习笔记. 什么是职位胜任素质模型 就是用行为方式来定义员工为了完成某项工作应该具备的知识.技能等特质 ...

  4. CCC3.0学习笔记_数字密钥数据结构

    CCC3.0学习笔记_数字密钥数据结构 系列文章目录 文章目录 系列文章目录 前言 4.1 Applet Instance Layout 4.2 Digital Key Structure 4.2.1 ...

  5. CCC3.0学习笔记_证书数据

    CCC3.0学习笔记_证书数据 系列文章目录 文章目录 系列文章目录 前言 1. [A] - SE Root CA Certificate 2. [B] - SE Root Certificate 3 ...

  6. MySQL学习笔记_上(select查询)

      上次整理了一些练习发到博客上了,也说要发基础的,整理了一下午才算是把查询那块的勉强整理完,下次再整理其他的,另外还在写设计模式和数据结构的草稿,写的差不多会慢慢发的,这两项算是副线发展,主线还是按 ...

  7. 梓益C语言学习笔记之指针

    梓益C语言学习笔记之指针 一.32位平台下,地址是32位,所以指针变量占32位,共4个字节 二.内存单元的地址即为指针,存放指针的变量称为指针变量,故:"指针"是指地址,是常量,& ...

  8. oracle11g中用asmlib配置磁盘组,ASM学习笔记_配置ASMLIB磁盘组

    ASM学习笔记_配置ASMLIB磁盘组 目录 1 ASMLIB Introduction 2 虚拟机添加一个共享磁盘(块设备) 3 下载,安装ASMLIB 4 配置,使用ASMLib 磁盘组 #### ...

  9. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

  10. 系统架构师学习笔记_第六章(下)_连载

    系统架构师学习笔记_第六章(下)_连载 6.3 基于 UML 的软件开发过程 6.3.1  开发过程概述 UML 是独立于软件开发过程的,能够在几乎任何一种软件开发过程中使用.迭代的渐进式软件开发过程 ...

最新文章

  1. C语言操作SQLite数据库
  2. linux centos7怎么绑定多ip,003 Linux配置多ip绑定的方法 | ip别名(以CentOS7为例 )
  3. 角色操作-查询所有角色流程分析
  4. 09.snapshot and restore操作
  5. Linux scp 指令
  6. 错误记录(五)Error creating bean with name 'sessionFactory' defined in file
  7. Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
  8. php操作redis实例大全
  9. 数字和字符对照关系表常用(编码表)
  10. 3650m5设置u盘启动_联想启天M425台式机设置u盘启动两种模式(支持uefi/bios双启动)...
  11. sqlserver2000安装时提示挂起并重启
  12. vue antd的menu组件使用
  13. 3701汉化包 axure r9_AXURE9最全的WEB设计元件库(分享版).rplib
  14. Excel_文本转数值型
  15. 【图像处理】.jpg 和 .png
  16. 监控告警 Metrics - Prometheus
  17. python 主力资金_邢不行 | 量化投资中如何计算机构、主力、散户资金流数据【视频】...
  18. linux系统如何检测网络打印机,Linux系统配置工具网络与打印机与硬件侦测
  19. c++/c中的预编译,文件包含伪指令,#include,包含哨卫,头文件保护
  20. 二层交换机vlan单臂路由的配置

热门文章

  1. 用pdf转cad转换器进行操作的简单步骤
  2. 五子棋等级考试软件的开发(三)
  3. usb扫描枪驱动下载 wince_常用扫描枪驱动
  4. xis表格怎么打印_《如何通过虚拟打印机将文件打印成excel文档》 表格怎么打印出来...
  5. jquery日历插件 途牛_js jquery 实现 排班,轮班,日历,日程。使用fullcalendar 插件...
  6. 服务器网口聚合操作文档,服务器网口聚合怎么操作
  7. CANoe软件安装失败
  8. 22 个最常用的Python包
  9. 利用Bitvise等软件通过SSH登录linux系统的心得
  10. MySQL Mac 终端环境变量配置