C语言数组地址问题

在刷C语言数组地址的问题,碰到一个题,不确定解法。求大佬指点。
题:.设short a3;如果数组a首地址为2000,则a+1的地址是________。
我看网上说,公式是:a[0]+id (d代表字节数) 照这样算出是2000 + 12 = 2002。请问这个解法对不对啊?

阅读 2.8k
2 个回答

上面的公式没有问题的,汇编中的寻址方式:基址+位移量,其中的基址指的是上述例子中数组的首位元素的位置,而位移量指的是相当于起始位置的偏移量,如下图所示,望采纳

clipboard.png

可以这么解。
或者可以写段程序验证一下:

#include <stdio.h>
int main(void)
{
    short a[] = {1,2,3,4,5};
    printf("ADDR1: %x \n",a);
    printf("ADDR2: %x \n",a+1);
}

放到 C 语言代码测试上跑一下,看下打出来的内存地址结果就知道了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进