只是一个简单的问题:
在32位机器上的是一个指针(**p
)的指针是4个字节?
答案 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位。