【C++】一个指针占几个字节?为什么呢?

一个指针在32位操作系统上,占4个字节

一个指针在64位操作系统上,占8个字节

但是,编译器为了兼容32位操作系统和64位操作系统,所以指针都是4个字节长度

为什么呢?

在计算机中,CPU不能直接与硬盘进行数据交换,CPU只能直接跟内存进行数据交换,而CPU是通过数据总线,地址总线,控制总线这三条总线和内存进行数据传输与操作

假设我们想通过CPU在内存中寻找一个数字x,首先CPU要通过地址总线,在内存中找到x的地址,通过控制总线知道该操作是读还是写,然后通过数据总线把数字传输到CPU中

我们知道:

地址总线的宽度决定了CPU的寻址能力,

数据总线的宽度决定了CPU单次数据传输的传送量,也就是数据传输速度

控制总线的宽度决定了CPU对其他控件的控制能力以及控制方式

我们平时所说的计算机是64位、32位、16位,指的是计算机CPU中通用寄存器一次性处理、传输、暂时存储的信息的最大长度。即CPU在单位时间内(同一时间)能一次处理的二进制数的位数
假如,某计算机的地址总线是32位,那么其一次可以处理的信息是32条,每一条地址总线有0或1两种可能,那么32根地址总线一共有232种可能,也就是其描述的地址空间为0x0000 0000 0000 0000 ~ 232-1。

我们一般需要32个0或1的组合就可以找到内存中所有的地址,而32个0或1的组合,就是32个位,也就是4个字节的大小,因此,我们只需要4个字节就可以找到所有的数据
。所以,在32位的计算机中,指针占4个字节。同理,在64位的计算机中,指针占8个字节。


原文链接: https://www.cnblogs.com/yinbiao/p/11606001.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    【C++】一个指针占几个字节?为什么呢?

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/303521

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月16日 上午12:20
下一篇 2023年2月16日 上午12:21

相关推荐