相邻数组元素的地址之间的差异..?

Jos*_*gal 2 c++ arrays

我只是对以下代码得到的输出感到困惑:

int arr[] = {10,20,30};
cout<<&arr[1]<<"\t"<<&arr[0]<<"\t"<<&arr[1] - &arr[0];
Run Code Online (Sandbox Code Playgroud)

我得到的输出就像

0046F7A0    0046F79C    1
Run Code Online (Sandbox Code Playgroud)

我想知道为什么地址之间的差异为 1(我期望为 4)...?这与指针减法有关吗?

Pra*_*han 5

是的,这就是指针运算的结果。arr + 1这与为什么会指向 的原因相同arr[1]。仅当两个指针都指向同一数组中的元素时,指针算术才是明确定义的。如果两个这样的指针PQ指向数组位置ij,则P-Q = i-j

另外,如果您查看打印的实际地址的差异,它们符合您的期望 - 差异为4