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