指向内存中指针的指针大小

时间:2012-10-04 03:37:57

标签: c memory pointers

只是一个简单的问题:

在32位机器上的

是一个指针(**p)的指针是4个字节?

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

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

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

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

相关问题