32位/64位处理器:*char与*int的区别?不同类型的指针+1的区别?

   此文章为网上相关内容的小总结

   首先是字(word)的定义:由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长,它是计算机进行数据处理和运算的单位,也就是 CPU 一次能处理的二进制代码的长度,即CPU一次所能处理的二进制代码的位数,也就是CPU的地址线的个数,即CPU的位宽。我们平时说的32位处理器,64位处理器中的 32、64 就是对应处理器的字长

   各类型的数据长度是由编译器决定的: 发现数据类型占内存的位数实际上与操作系统的位数和编译器(不同编译器支持的位数可能有所不同)都有关,具体某种数据类型占字节数得编译器根据操作系统位数两者之间进行协调好后分配内存大小。具体在使用的时候如想知道具体占内存的位数通过sizeof(int)可以得到准确的答案。

   在这里以int与char典型的变量类型举例,他们作为指针时,数据长度相同,但受处理器位宽影响,会有所不同

在32位处理器 char为1字节 *char为4字节 int为4字节 *int为4字节
在64位处理器 char为1字节 *char为8字节 int为4字节 *int为8字节

在各种变量类型指针+1的问题上

   首先在定义一个变量并赋值时,编译器会给此变量自动分配内存地址,栈区进行入栈操作,全局区在相应的地址上进行存储数据。
那么指针会指向一个地址,指针变量加1,即向后移动1 个位置表示指针变量指向下一个数据元素的首地址。但是这将移动多少位地址,这跟变量的类型有关
   例如64位处理器中
   int类型为4字节 对应的指针+1将移动4字节
   char类型为1字节 对应的指针+1将移动1字节

   以此类推,可以知道不同类型指针+1的区别。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值