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

问题描述 投票:0回答:1

我有一个天真的问题:

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 位系统上更有效?

c++ pointers double 32bit-64bit
1个回答
5
投票

那么

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

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

想一想:你的“指针”可以指向一个double ...一个float ...一个char。

这是否意味着

double
在 64 位系统上比在 32 位系统上更有效?

没有。它只是意味着 64 位机器可以直接访问 更大的地址空间.

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

C 编程中的指针:什么是指针、类型和示例

这里有一篇关于“内存寻址”的好文章:

虚拟地址空间

© www.soinside.com 2019 - 2024. All rights reserved.