让我们有一个int类型的数组: -
int arr[5];
现在,
if arr[0] is at address 100 then
Why do we have;
arr[1] at address 102 ,
arr[2] at address 104 and so on.
而不是
arr[1] at address 101 ,
arr[2] at address 102 and so on.
是因为整数需要2个字节吗?
每个内存块是否具有1个字节容量(无论是32位处理器还是64位)?
答案 0 :(得分:3)
这是因为整数需要2个字节?
是
显然在您的系统上,int
的大小为2.在其他系统上,情况可能并非如此。通常int
的大小为4或8字节,但也可以使用其他大小。
答案 1 :(得分:3)
您的第一个示例与16位ints
一致。
关于你的第二个例子(&arr[0]==100
,&arr[1]==101
,&arr[2]==103
),这不可能是有效的布局,因为连续元素之间的距离在第一对和第二
答案 2 :(得分:0)
你是对的,在你的机器上,sizeof int是2,所以数组中的下一个可能的值将是前一个2字节。
-------------------------------
|100|101|102|103|104|105|106....
-------------------------------
arr[0] arr[1] arr[2]
int
的大小没有保证。 C ++规范只是说sizeof(int)> = sizeof(char)。这取决于处理器,编译器等。
了解更多信息try this