指针变量根据存放系统的不同,占用空间大小也不同,实际上就是根据系统单词处理bit来占用的空间,例如32bit系统,需要用指针存储32bit的地址,所以指针占用空间32bit,4byte。
*((__IO uint16_t *)(0x1FFFF7E8))操作,对于0x1FFFF7E8,通过(__IO uint16_t *)变为uint16_t类型数据的32bit地址指针,通过*取该地址的值返回。注意!!!指针变量表示的指向变量的类型,指针变量的大小和系统bit有关,指针变量指向的值和指针变量类型有关。
移动数据宽度表示:
1、(__IO uint16_t *) p 指针,p+1 为每次移动uint16_t 1个变量宽度 = 16bit
2、若使用直接地址增加,需要移动和指针类型数据宽度相同的宽度。例如*((__IO uint16_t *)(0x1FFFF7E8))的下一个地址为0x1FFFF7E8+2
取值调用,相当于新建了变量。
传址操作,操作原数据,也可进行多返回值操作。
注意不要返回局部变量的句柄指针,因为局部变量结束后会释放内存