C/c++的一个指针占几个字节?

结论:

        计算机通过地址总线寻找内存中的一个字节,32位操作系统的地址总线位宽是32位,所以每一个字节的编址就会由32个0或者1组成,即4字节,它的寻址能力就是2^32(4GB);64位的字节地址就是8字节。

因此,在不同操作系统中指针大小结论:
(1)在32位操作系统下,指针是占4个字节空间大小,不管是什么数据类型
(2)在64位操作系统下,指针是占8个字节空间大小,不管是什么数据类型

        在计算机中,CPU通过数据总线,地址总线,控制总线这三条总线和内存进行数据传输与操作。假设我们想通过CPU在内存中寻找一个变量a,首先CPU要通过地址总线,在内存中找到a的地址,通过控制总线知道该操作是读还是写,然后通过数据总线把数字传输到CPU中。

    因此,我们知道:

           地址总线的宽度决定了CPU的寻址能力,32位和64位的系统寻址能力分别32位和64位,对应指针分别是4字节和8字节。

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

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

 
实验:(实验环境 vs2017)

在 vs2017 中,我们可以直接打印测试 sizeof(int*) 的大小,当然,要测试不同的编译模式。

64位编译模式(编出来的程序目标是运行在64位操作系统上)下

在这里插入图片描述

64位编译模式下,sizeof返回的是unsigned long long类型,占8字节

32位编译模式下

在这里插入图片描述

32位编译模式下,sizeof返回的是unsgined int类型,占4字节

参考:

操作系统内存中指针类型都占用多少内存空间_指针类型占多少字节_追星星的蜗牛的博客-CSDN博客

c语言中指针几个字节,【C++】一个指针占几个字节?为什么呢?-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值