有一个点不太懂,为什么这里加一的话内存值是增加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的内存条,也是这个道理。
相似问题