查看: 250|回复: 2

[原创] 每日一贴第十七天 stm32 flash读取

[复制链接]

59

主题

1

好友

1362

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    开心
    2017-5-8 09:35
  • 签到天数: 130 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-8-24 16:10:49 |显示全部楼层
    本帖最后由 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 *)这个强制类型转换只是说明指针指向的数据是什么类型,不会改变指针本身,最前面的*就是取数据了,这个没有疑问。
    回复

    使用道具 举报

    32

    主题

    5

    好友

    1228

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    2017-7-14 17:26
  • 签到天数: 190 天

    连续签到: 5 天

    [LV.7]常住居民III

    发表于 2016-8-24 19:21:11 |显示全部楼层
    p表示的是一个地址,sizeof(p)取的是地址的长度,当然都是32位的啦,和这个地址里的数据的类型没关系。
    XinChao
    回复

    使用道具 举报

    59

    主题

    1

    好友

    1362

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    2017-5-8 09:35
  • 签到天数: 130 天

    连续签到: 1 天

    [LV.7]常住居民III

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

    是的,以前理解错了
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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

    手机版|爱板网 |网站地图  

    GMT+8, 2017-7-23 12:41 , Processed in 0.097355 second(s), 10 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部