为什么 `&n` 和 `&n + 1` 相差 `4` 而不是 `1`?

Why do `&n` and `&n + 1` differ by `4` instead of `1`?

我希望 &n&n + 1 的值是相邻的内存框,因此它们的地址应该相差 1。但是,每次我 运行 这些命令时,我得到的地址相差 4(例如 0056F8000056F804)。为什么会这样?

#include <iostream>
using namespace std;

int main()
{
    int n = 3;
    cout << &n << endl;
    cout << &n + 1;
}

指针算法创建一个指向数组的特定 元素 的指针(或者等效地,单个对象被视为大小为 1 的数组),因此它有效地改变了指针值乘以元素大小的倍数。

在您的系统上,int 的大小显然是 4 个字节,因此通过将 1 加到 int * 它会创建一个比原始值大 4 的指针值。