32位系统下指针占4字节,64位系统下占8字节,由编译目标架构决定,可通过sizeof(void*)验证,如使用-m32选项时即使在64位系统上指针仍为4字节。

在64位系统和32位系统下,C++中指针的大小不一样。
32位系统下指针的大小
在32位系统中,地址总线通常是32位宽,因此一个指针需要32位(即4字节)来存储内存地址。
这意味着无论指向什么类型(int*、char*、void*等),所有指针在32位环境下都占4个字节。
64位系统下指针的大小
在64位系统中,地址总线扩展为64位,指针需要64位(即8字节)来表示完整的内存地址。
立即学习“C++免费学习笔记(深入)”;
因此,在64位系统上,指针通常占8个字节。
如何验证指针大小
你可以通过以下代码查看当前平台下指针的大小:
#includeint main() { std::cout << "指针大小: " << sizeof(void*) << " 字节\n"; return 0; }
在32位编译环境下输出通常是4,在64位环境下是8。
需要注意的是,指针大小取决于编译目标平台,而不是操作系统位数本身。例如,在64位系统上使用32位编译器(如使用 -m32 选项),指针仍为4字节。
基本上就这些。指针大小由编译时的目标架构决定,32位下4字节,64位下8字节。










