指针的大小取决于您正在编译的应用程序的类型。
指针类似于32-bit unsigned int32 位应用程序中的 a,因为它存储一个内存位置。
如果应用程序是N-bit应用程序,则任何指针的大小都会很N bits长,因为它需要足够大以存储内存位置。
任何N-bit可以运行N-bit应用程序的计算机的 RAM 限制为2^N bytes. 这使得最大的内存位置 id 等于2^N - 1(因为0x00000000是一个有效的内存地址)。
2^N - 1需要N bits用二进制表示,我的朋友就是为什么指针在 32 位应用程序中的大小为 4 字节的原因。
以一个3-bit简单的应用为例:(我宁愿不处理大数)
让我们假设它在一3-bit台机器上运行。由于2^3 - 1是可以用二进制表示的最大数,3 bits因此系统可以处理的最大内存将是2^3字节。(这些是无符号的。负内存地址不存在)
可能的内存地址是:
0x0(二进制表示000:)
0x1(二进制表示001:)
0x2(二进制表示010:)
0x3(二进制表示011:)
0x4(二进制表示100:)
0x5(二进制表示101:)
0x6(二进制表示110:)
0x7(二进制表示111:)
3 bits因此,在这种情况下,需要有一个指向内存地址的指针。
替换3为32,这将适用于您在这里所做的事情。
(矫枉过正的回答很多?是的。为什么?因为我很无聊。)