查看: 1611|回复: 2

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

[复制链接]
  • TA的每日心情
    开心
    2018-12-13 08:40
  • 签到天数: 138 天

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

    使用道具 举报

  • TA的每日心情
    无聊
    2020-7-7 14:50
  • 签到天数: 284 天

    连续签到: 1 天

    [LV.8]以坛为家I

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

    使用道具 举报

  • TA的每日心情
    开心
    2018-12-13 08:40
  • 签到天数: 138 天

    连续签到: 1 天

    [LV.7]常住居民III

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

    是的,以前理解错了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则



    手机版|小黑屋|与非网

    GMT+8, 2024-4-24 07:01 , Processed in 0.129122 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.