只是一个简单的问题:
在 32 位机器上,指向指针 ( **p
) 的指针是否为 4 个字节?
是的......它将是4个字节......但不能保证。
逻辑是指针仅仅是内存地址。在一台 32 位地址的机器中,任何存储实体的内存地址几乎肯定是 4 个字节。因此,存储指针的内存地址为 4 个字节。因此指向指针的指针是 4 个字节。ISO C 标准没有承诺这些。这就是几乎所有实现的结果。
正确的。指针通常具有固定大小。在 32 位机器上,它们通常是 32 位(= 4 字节)
通常是的,32 位机器上的地址将是 4 个字节。
如果您不想做出假设,最好的选择是运行旧的sizeof(p)
其他人已经提到它肯定是 32 位或 4 个 8 位字节。
但是,根据硬件和编译器的不同,它可能会更少或更多。
如果您的机器只能在 32 位边界将其内存寻址为 32 位单元,则您将必须有一个更大的指针来寻址和访问每个 32 位内存单元的8 位部分 ( chars
/ )。bytes
如果此处的编译器决定不使用不同大小的指针,则所有指针(包括指向指针的指针)都变为 34+ 位长。
同样,如果程序非常小并且可以容纳 64KB,编译器可能能够将所有指针减少到 16 位。