对于单片机中指针操作的进一步理解

版权声明:如需转载请标注 https://blog.csdn.net/weixin_40973138/article/details/88361893

开门见山

  1. 一个地址对应一个字节的数据,没有字地址之说;
  2. 指针类型的含义是指将要对该地址开始的多少多少字节进行操作,以及操作模式;
  3. 当我们对一个地址进行增减操作时,其所增加或减少的数量和定义时的数据类型有关
  4. 指针类型强制转换的意思是指,我将要对该地址所开始的多少多少字节数据进行操作

##########################################################################


1. 一个地址对应一个字节的数据,没有字地址之说;

一个地址就是对应一个字节的数据,即8 位;

2. 指针类型的含义是指将要对该地址开始的多少多少字节进行操作,以及操作模式;

uint8_t* Address;        /* 对DATA 地址开始的8 位数据进行操作,即可以一次读写8 位 */
uint16_t* Address;       /* 对DATA 地址开始的16 位数据进行操作,即可以一次读写16 位 */
uint32_t* Address;       /* 对DATA 地址开始的32 位数据进行操作,即可以一次读写32 位 */

3. 当我们对一个地址进行增减操作时,其所增加或减少的数量和定义时的数据类型有关;

例如当我们定义一个uint32_t 类型的数据时,我们对该数据地址进行加一,然后得到的数据地址 = 原地址 + 4
在这里插入图片描述
同理,若是uint16_t 类型数据,则数据地址 = 原地址 + 2
在这里插入图片描述
若是uint8_t 类型数据,则数据地址 = 原地址 + 1
在这里插入图片描述

4. 指针类型强制转换的意思是指,我将要对该地址所开始的多少多少字节数据进行操作;

其实就是,将一个地址进行强制转换后,该地址的所有信息都没有发生任何变化,唯一变化的地方就是我对该地址所提取的数据字节数量

*(uint32_t*)Address      /* 对该地址开始的32 位数据进行读写 */
*(uint16_t*)Address      /* 对该地址开始的16 位数据进行读写 */
*(uint8_t*)Address       /* 对该地址开始的8 位数据进行读写 */

###########################################################################


推荐一篇同样不错的Blog

猜你喜欢

转载自blog.csdn.net/weixin_40973138/article/details/88361893