1

只是一个简单的问题:

在 32 位机器上,指向指针 ( **p) 的指针是否为 4 个字节?

4

5 回答 5

2

是的......它将是4个字节......但不能保证。

于 2012-10-04T03:39:38.527 回答
2

逻辑是指针仅仅是内存地址。在一台 32 位地址的机器中,任何存储实体的内存地址几乎肯定是 4 个字节。因此,存储指针的内存地址为 4 个字节。因此指向指针的指针是 4 个字节。ISO C 标准没有承诺这些。这就是几乎所有实现的结果。

于 2012-10-04T03:55:03.053 回答
1

正确的。指针通常具有固定大小。在 32 位机器上,它们通常是 32 位(= 4 字节)

于 2012-10-04T03:43:24.470 回答
1

通常是的,32 位机器上的地址将是 4 个字节。

如果您不想做出假设,最好的选择是运行旧的sizeof(p)

于 2012-10-04T03:49:16.613 回答
1

其他人已经提到它肯定是 32 位或 4 个 8 位字节。

但是,根据硬件和编译器的不同,它可能会更少或更多。

如果您的机器只能在 32 位边界将其内存寻址为 32 位单元,则您将必须有一个更大的指针来寻址和访问每个 32 位内存单元的8 位部分 ( chars/ )。bytes如果此处的编译器决定不使用不同大小的指针,则所有指针(包括指向指针的指针)都变为 34+ 位长。

同样,如果程序非常小并且可以容纳 64KB,编译器可能能够将所有指针减少到 16 位。

于 2012-10-04T04:04:57.080 回答