旅游网站建设的概念,网络品牌推广多少钱,上海建设网站平台,wordpress使用插件下载指针的大小与什么有关#xff1f;
cpu位数#xff08;32位数4字节#xff0c;64位数8字节#xff09;操作系统位数#xff08;32位数4字节#xff0c;64位数8字节#xff09;编译器的位数#xff08;32位数4字节#xff0c;64位数8字节#xff09;
当上述3种位数不…指针的大小与什么有关
cpu位数32位数4字节64位数8字节操作系统位数32位数4字节64位数8字节编译器的位数32位数4字节64位数8字节
当上述3种位数不同取最小的位数。 比如如果CPU、系统都是64位的但编译器是32位的那么很显然指针只能是32位4字节大小。
我们的内存中有各种各样的数据整型、浮点型、字符型等等。这些数据在内存中占据不同大小的储存空间故用sizeof运算符注sizeof是种运算符而不是函数它在编译时发挥作用进行运算时结果是不同的。然而不同类型的指针在相同系统环境下进行这种运算时结果却是相同的。为什么呢
众所周知C语言中的指针描述的是内存中的地址。而内存地址这种东西则是由CPU进行编址的。对于一个4位的CPU来讲它能同时输出的数据为4位即0000-1111共24 种情况故这些二进制数字只能对应到16个位置的内存地址即CPU仅能识别出16个内存地址。即便你的内存再大它也显示只有16个位置的内存可用。这种原理同样应用于32位和64位的CPU。
32位的CPU能同时呈现32个位的数据故有232 种情况对应到232 个内存位置也就是最大3.85GB大小因此32位的系统只能支持最大4GB的内存。相比之下64位的CPU能同时吞吐 264 位的数据这显然能够对应到264 个内存的地址而理论上这个大小换算成10进制则是相当大的数如果对应到内存此时一个很大的内存。所以我们说64位系统理论支持无穷大内存这里的无穷大只是一种概念因为我们不可能用到如此巨大容量的内存。
综上因为指针存放的是地址所以32位内存共4个字节64位系统的64位地址共8个字节——你应该明白什么了吧没错32位指针4字节64位指针8字节。
当然CPU只是影响指针大小的首要因素除了它之外还要看操作系统和编译器的位数。这里指针的大小由这三个东西中位数最小的那项决定。比如如果CPU、系统都是64位的但编译器是32位的那么很显然指针只能是32位4字节大小。