查看: 139|回复: 2

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

[复制链接]

48

主题

1

好友

1059

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 115 天

    [LV.6]常住居民II

    发表于 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 *)这个强制类型转换只是说明指针指向的数据是什么类型,不会改变指针本身,最前面的*就是取数据了,这个没有疑问。
    回复

    使用道具 举报

    26

    主题

    3

    好友

    1412

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 106 天

    [LV.6]常住居民II

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

    使用道具 举报

    48

    主题

    1

    好友

    1059

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 115 天

    [LV.6]常住居民II

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

    是的,以前理解错了
    回复

    使用道具 举报

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

    关闭

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


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

    GMT+8, 2016-12-4 11:57 , Processed in 0.106333 second(s), 10 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部