Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解指针&;内存管理 我试图理解C++中的指针。_C++_Pointers_Memory - Fatal编程技术网

理解指针&;内存管理 我试图理解C++中的指针。

理解指针&;内存管理 我试图理解C++中的指针。,c++,pointers,memory,C++,Pointers,Memory,这里我们有一个小的代码示例: int main(void) { int var = 8; void* pointer = &var; // 0x00A0FB64 } 还有一个关于记忆的图像: 十六进制数字系统中存在08 00,当我们将其转换为二进制数字系统时: 我们将获得100000000000000000000000 整数的大小应该是32位,但只有28位 这怎么可能? 我说对了吗整数的内存表是(?): 0x00A0FB64 -> 08 0x00A0FB65 -

这里我们有一个小的代码示例:

int main(void) {
    int var = 8;
    void* pointer = &var; // 0x00A0FB64
}
还有一个关于记忆的图像:

十六进制数字系统中存在
08 00
,当我们将其转换为二进制数字系统时:

我们将获得
100000000000000000000000

整数的大小应该是32位,但只有28位

这怎么可能?

我说对了吗整数的内存表是(?)

0x00A0FB64 -> 08
0x00A0FB65 -> 00
0x00A0FB66 -> 00
0x00A0FB67 -> 00

谢谢你的帮助

08
是二进制的
1000
。然而,
000011000
也是如此

因此,内存实际上变为:
00001000000000000000000000
,即32位


从技术上讲,只有
int
至少是16位(在其他类型的保证中)


因此,理论上,只要满足类型大小的所有其他要求,它可以是28位。仅仅是在实践中,你可能没有28位,但更可能是32位。

1000
只是
8
,你在
08
-
00001000
中将前导零
0
转换为十进制数字系统-你想写二进制吗?@S.M.我想,编辑过。哦,对我来说是多么简单,多么期待,多么尴尬。谢谢!整数的内存表是正确的,不是吗?我想你的问题是“为什么我的字节顺序是0123”。。。答案是查找endian。不过,我想补充一点,问题需要一个“?”@UKMonkey,它们需要编辑。
0x00A0FB64 -> 08
0x00A0FB65 -> 00
0x00A0FB66 -> 00
0x00A0FB67 -> 00