为什么 `&n` 和 `&n + 1` 相差 `4` 而不是 `1`?
Why do `&n` and `&n + 1` differ by `4` instead of `1`?
我希望 &n
和 &n + 1
的值是相邻的内存框,因此它们的地址应该相差 1
。但是,每次我 运行 这些命令时,我得到的地址相差 4(例如 0056F800
和 0056F804
)。为什么会这样?
#include <iostream>
using namespace std;
int main()
{
int n = 3;
cout << &n << endl;
cout << &n + 1;
}
指针算法创建一个指向数组的特定 元素 的指针(或者等效地,单个对象被视为大小为 1 的数组),因此它有效地改变了指针值乘以元素大小的倍数。
在您的系统上,int
的大小显然是 4 个字节,因此通过将 1 加到 int *
它会创建一个比原始值大 4 的指针值。
我希望 &n
和 &n + 1
的值是相邻的内存框,因此它们的地址应该相差 1
。但是,每次我 运行 这些命令时,我得到的地址相差 4(例如 0056F800
和 0056F804
)。为什么会这样?
#include <iostream>
using namespace std;
int main()
{
int n = 3;
cout << &n << endl;
cout << &n + 1;
}
指针算法创建一个指向数组的特定 元素 的指针(或者等效地,单个对象被视为大小为 1 的数组),因此它有效地改变了指针值乘以元素大小的倍数。
在您的系统上,int
的大小显然是 4 个字节,因此通过将 1 加到 int *
它会创建一个比原始值大 4 的指针值。