读书人

小弟我是新手大家指点一上多谢了!

发布时间: 2012-08-09 15:59:21 作者: rapoo

我是新手,大家指点一下,谢谢了!~
#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字节吗?

读书人网 >C语言

热点推荐