一个指向4字节的双精度指针如何指向8字节的双精度指针?



我有一个天真的问题:

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 Bytesdouble指针如何指向8 Bytes(double object)?

  • 在64位系统上,指针的大小是8字节,所以它是OK的。这是否意味着double在64位系统上比在32位系统上更有效?

那么4 Bytes指向double的指针如何指向8 Bytes(double object)?

因为"指针"与"指向"的内容不同。

想一想:你的"指针"可以指向一个双…一个浮子……一个char。

这是否意味着double在64位系统上比在32位系统上更有效?

。这仅仅意味着64位机器可以直接访问更大的地址空间

这里有一个关于指针的很好的教程:

C语言编程中的指针:什么是指针,类型&示例这里有一篇关于"内存寻址"的好文章:

虚拟地址空间

最新更新