我有一个天真的问题:
A
double
即使在 32 位机器上也是 8 字节,也是 long long
,我们知道该实现上的指针大小仅为 4 字节。因为那跟处理器的寄存器大小有关系。因此处理器寄存器必须能够处理任何数据类型。
这是我的代码,使用编译器标志运行
-m32
:
std::cout << "size of double: " << sizeof(double) << '\n'; // 8
std::cout << "size of double*: " << sizeof(double*) << '\n'; // 4
那么
double
的4 Bytes
指针如何指向8 Bytes
(double object
)?
在 64 位系统上,指针的大小为 8 字节,所以没问题。这是否意味着
double
在 64 位系统上比在 32 位系统上更有效?
那么
的double
的指针如何指向4 Bytes
(8 Bytes
)?double object
因为“指针”与“指向”的内容不同。
想一想:你的“指针”可以指向一个double ...一个float ...一个char。
这是否意味着
在 64 位系统上比在 32 位系统上更有效?double
没有。它只是意味着 64 位机器可以直接访问 更大的地址空间.
这里有一个关于指针的好教程:
这里有一篇关于“内存寻址”的好文章: