有一个点不太懂,为什么这里加一的话内存值是增加4?

来源:1-9 多级指针的使用

不明滚动物体

2022-11-18 18:35:08

图片描述
老师你好!我理解每块内存存一个字节就是两个16位,而指针是32位的数字,所以要四块内存装,sizeof也为4,但是指针变量加一就相当于内存值加4,这个还是觉得有点怪怪的

写回答

1回答

山行老师

2022-11-18

指针变量+1表示跳到下一个同类型元素位置,那么指针指向元素是什么类型就相应跳转类型对应的字节数。
比如short *p = &a[0],那么p+1就是跳到a[1]的位置,就是这么约定的,不一定是增加4。

你理解错了,每个字节就是8位,而32位系统下指针变量本身是32位的数字;

指针变量的值是指代内存字节编号,32位指针代表这个指针寻址范围是0x0000 0000~0xFFFF FFFF;

也就是说你在32位系统下指针最多访问这么多个字节的数据,也就是4GB;
比较旧的电脑用的32位系统最大只支持4GB的内存条,也是这个道理。

0

物联网/嵌入式工程师

面向零基础保姆式教学+简历指导+1V1模拟面试+3次内推,助力轻松就业!

394 学习 · 1207 问题

查看课程