理解指针&;内存管理 我试图理解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