请回答菜鸟一些C语言问题?请问为什么 a+1为1008,a+2为1016。请详解。谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/07 06:46:59
如果此二维数组的首地址为1000,由于第0行有4个整型元素,所以a+1为1008,a+2也就为1016。如图所示
_______________
(1000) ____ | 0 | 1 | 2 | 3 |
|___|___|___|___|
(1008) ____ | 4 | 5 | 6 | 7 |
|___|___|___|___|
(1016) ____ | 8 | 9 | 10| 11|
|___|___|___|___|
请问为什么 a+1为1008,a+2为1016。

你的整形元素只占了两个字节,可能你用的是Turbo C 吧,这个系统对短整型(short)和整形(int)都是分配2个字节

Visual C++ 6.0对短整型分配2个,而对整形和长整形都分配4个字节

应该是你用的编译系统的问题吧

数组元素是整形,每个元素占4个字节(我用的是vc 6.0),a代表数组首元素的地址,a+1也是地址,它表示的是第二行的首元素,即a[1][0],所以,
a+1的地址为:1000+4*4(这个是数组元素所占的字节数)=1016

同理,a+2(a[2][0])为:1000+4*8=1032

不知道能不能帮到你

因为存放的是整型元素,整型元素的大小就是8位,所以每个元素占8个地址单元。

楼上的,整型是4个字节

应该看变量的类型

这是不定的,要根据系统为整型数据分配几个字节。一个字节是八位。因为数组内存空间是连续的故后一个数的地址是前一个的地址在加上整刑数据占的字节数。

a,a+1,a+2为每一行的地址啊,a+1=a[1][0],
a+2=a[2][0],一行8地址单元,所以啊...

因为a是二维数组名,也就是二维数组的首地址,相当于
const int (* )[4] 这样类型的一个指针,
a + 1 就是a移动4个字节