【发布时间】:2021-07-11 21:24:35
【问题描述】:
我希望&n 和&n + 1 的值是相邻的内存盒,因此它们的地址应该相差1。但是,每次运行这些命令时,我都会得到相差 4 的地址(例如 0056F800 和 0056F804)。为什么会这样?
#include <iostream>
using namespace std;
int main()
{
int n = 3;
cout << &n << endl;
cout << &n + 1;
}
【问题讨论】:
-
什么是
n? minimal reproducible example 会很有帮助。 -
提示:
sizeof(*n). -
@Eljay 我添加了一个示例。
-
当您说“box”时,实际上是在说“byte”。你相信整数不大于一个字节吗?如果它们更大,那么它们必须分开一个以上的字节以避免重叠。
-
深思熟虑:如果您将其设为 1,则必须在
int* + int*不导致int*或以指向int中间的一些int*结尾之间做出选择.这两个真的很尴尬。