我有一个令人费解的问题(至少对我来说)
假设我声明了一个整数数组:
int arr[3];
从概念上讲,内存中发生的情况是,在编译时,分配了 12 个字节来存储 3 个连续的整数,对吧?(这里有一个插图)
根据图示,示例地址
arr[0]
是1000
,
arr[1]
是1004
, 并且
arr[2]
是1008
。
我的问题是:
arr[0]
如果我输出和的地址之间的差异arr[1]
:
std::cout << &arr[1] - &arr[0] << std::endl;
而不是得到4
,
我出乎意料地得到1
。
谁能解释为什么会导致该输出?
PS:在我的电脑上,一个 int 是 4 个字节。