Classyyy 2022-05-30 23:25 采纳率: 40%
浏览 68

存储单元和地址的关系。

存储单元是什么意思呢?存储单元就对应一个内存地址对吗?还是说只要有存储单元才会有地址,有地址就会有存储单元呢? 举个例子,

第一个例子:"Great Wall"为数组里的元素

char s[] ="Great Wall" ;
printf("s[0]地址为%x\n", &s[0]);
printf("s[1]地址为%x\n", &s[1]);

运行结果是:
s[0]地址为0x33fa3c
s[1]地址为0x33fa3d
那么意思就是,G放在了内存地址为0x33fa3c的存储单元里,r放在了内存地址为0x33fa3d的存储单元里,是这样理解对吗?

第二个例子:"Great Wall"为字符串常量。

char *f = "Great Wall";
printf("f值为%x\n", f);
printf("f+1值%x\n", f+1);    

运行结果是:
f值为0xb97cb4
f+1值为0xb97cb5
那么意思就是,G放在了内存地址为0xb97cb4的存储单元里,r放在了内存地址为0xb97cb5的存储单元里,是这样理解对吗?问题是,Great Wall是字符串常量了呀,不是说字符串常量没有存储单元吗?那为什么每一个字符都会有地址呢?明明要有存储单元才会有地址吧。

  • 写回答

1条回答 默认 最新

  • ...404 Not Found 2022-05-31 06:23
    关注

    #include<stdio.h>

    #include<string.h>

    int main()

    {

    char*p = "Great Wall";

    for (int i = 0; i < strlen(p); i++)

    {

    printf("%p:%c\n", p+i, *(p + i));

    }

    return 0;

    }

    结果是对应地址和值

     

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月30日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助