【发布时间】:2021-10-28 19:18:14
【问题描述】:
我有这个幼稚的问题:
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 位系统上更有效?
【问题讨论】:
-
一个指针包含其他东西的内存地址。其他东西的大小不会改变它的地址或任何大小的指针指向它的能力。
-
打个比方:房子的地址不如房子本身大
-
@Lala5th 也许Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu 可能不适合小房子? ????
-
@Lala5th • sizeof(char) 将 = 1,并且在每个字节为 64 位的架构上可以为 64 位。
标签: c++ pointers double 32bit-64bit