在刷C语言数组地址的问题,碰到一个题,不确定解法。求大佬指点。
题:.设short a3;如果数组a首地址为2000,则a+1的地址是________。
我看网上说,公式是:a[0]+id (d代表字节数) 照这样算出是2000 + 12 = 2002。请问这个解法对不对啊?
在刷C语言数组地址的问题,碰到一个题,不确定解法。求大佬指点。
题:.设short a3;如果数组a首地址为2000,则a+1的地址是________。
我看网上说,公式是:a[0]+id (d代表字节数) 照这样算出是2000 + 12 = 2002。请问这个解法对不对啊?
可以这么解。
或者可以写段程序验证一下:
#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 语言代码测试上跑一下,看下打出来的内存地址结果就知道了。
上面的公式没有问题的,汇编中的寻址方式:基址+位移量,其中的基址指的是上述例子中数组的首位元素的位置,而位移量指的是相当于起始位置的偏移量,如下图所示,望采纳