全部学习汇总: 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. Python实现微信防撤回
  2. 前端入门 前端自学路线 web开发前端如何学习
  3. 编程方法学7:循环与一半
  4. 单点登录的原理与CAS技术的研究
  5. 网络工程师交换试验手册之十八:SWITCH的基本配置
  6. php里面的 n算是,用PHP中的bcmath计算第N个根
  7. Java笔记-Log4j在Spring Boot中的使用
  8. io.circe_如何使用Circe(Un)在Akka HTTP中封送JSON
  9. 【推荐实践】模型化召回在陌陌社交推荐的探索和应用.pdf(附下载链接)
  10. 显示所有大写字母python_python 输出所有大小写字母的方法
  11. html 日期区间选择器,element日期范围选择器
  12. Android多开框架优化游戏防闪思路
  13. 计算机音乐怎么调音速,音频实现变声?学会使用Studio One改变音速
  14. Pytorch基础学习(第一章-PyTorch基础概念)
  15. 什么是 GPU 加速的计算?
  16. docker搭建zabbix服务
  17. 后台管理----首页布局分析1
  18. Web性能测试基本性能指标及案例分析
  19. 如何在本地进行一个IP访问多个域名
  20. 银行信用风险预测分析

热门文章

  1. C4D模型工具—平面切割
  2. PDF转CAD怎么转?如何将PDF文件转换成CAD文件?
  3. Google 数学之美系列整理
  4. 【共读】企业信息安全建设与运维指南(一)
  5. Python利用结巴分词进行中文分词
  6. afg低功耗状态黑苹果_拔草1L小主机 Dell9020m  + 黑苹果折腾记录
  7. 无线路由也超频 刷机从TOMATO固件开始
  8. 浪曦视频--工厂方法模式
  9. Machine Learning 资讯 : 经济学家谈人工智能
  10. 贾俊平统计学思维导图- 第一章 导论