2回答

0收藏

每日一贴第十七天 stm32 flash读取

STMCU STMCU 2432 人阅读 | 2 人回复 | 2016-08-24

本帖最后由 apple_9938 于 2016-8-24 16:15 编辑

#include <stdio.h>
int main(int *argc,char *argv[])
{
int *p=NULL; //我们定义一个int *类型
char *p1=NULL;//char *类型
short *p2=NULL;//short *类型
long *p3=NULL;//long *类型
printf("int *p: %d, char *p1:%d,short *p2:%d ,long *p3:%d\n\r",sizeof(p),sizeof(p1),sizeof(p2),sizeof(p3));//我们通过sizeof这个关键字得到大小,经过试验得到都是4字节。
return 0;
}
所以我们验证不管是什么类型的指针,那么都是4字节。

STM32 flash读取:
 *(uint32_t *)0x8000000;//读一个字
  *(uint8_t *)0x8000000;//读一个字节;
  *(uint16_t *)0x8000000;//读半字;
由以上分析可知指针的大小都是4个字节,那么(uint32_t *)这个强制类型转换只是说明指针指向的数据是什么类型,不会改变指针本身,最前面的*就是取数据了,这个没有疑问。
分享到:
回复

使用道具 举报

回答|共 2 个

倒序浏览

沙发

xinchao

发表于 2016-8-24 19:21:11 | 只看该作者

p表示的是一个地址,sizeof(p)取的是地址的长度,当然都是32位的啦,和这个地址里的数据的类型没关系。
XinChao
板凳

apple_9938

发表于 2016-8-25 08:09:37 | 只看该作者

xinchao 发表于 2016-8-24 19:21
p表示的是一个地址,sizeof(p)取的是地址的长度,当然都是32位的啦,和这个地址里的数据的类型没关系。 ...

是的,以前理解错了
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条