我是新手,大家指点一下,谢谢了!~
#include<stdio.h>
void main()
{
int i;
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
printf("\na=%X\n",a);
for(i=0;i<3;i++)
printf("\na+%d=%X\n",i,a+i);
}
这是我练习二维数组与指针的一个简短程序,问题是这样的,我想输出这个数组中a,a+1,和a+2的地址,结果如下:
a=18FF14
a+0=18FF14
a+1=18FF24
a+2=18FF34
Press any key to continue
因为数组中的元素是占用的连续的内存空间,所以我觉得a,a+1,和a+2的地址应该差值只有8,这种18FF14
表示是不是汇编中说的物理地址啊,我看到有的只有四位十六进制的地址,为什么我的有六位呢?是和机器的字长有关么?还是其他的什么呢?
大家帮我一下,有点迷惑,我对计算机知识了解不多,说错的地方大家指正!谢谢!~
[解决办法]
a, a+1, a+2的地址应该差16
a 跟 a+1 之间夹着4个int型,不是应该夹着16字节吗?