为什么指向整数的指针增加4个字节?

Kam*_*que 1 c c++ memory pointers increment

可能重复:
有关指针增量的问题

当我增加一个int指针时,它的地址有4个字节的间隙.为什么会这样?为什么int指针需要4个字节来存储而char需要2个字节?

Sin*_*all 6

当您递增类型A的指针时,您指针在内存中向前移动它指向的类型的大小.在你的机器上,int占用4个字节,因此指针移动4个字节.

至于"为什么int我的机器需要4个字节?":

C++标准说(4.9.1.第2段):

有五种标准的有符号整数类型:"signed char","short int","int","long int"和"long long int".在此列表中,每种类型至少提供与列表中前面的存储一样多的存储空间.<...>简单的int具有执行环境架构所建议的自然大小[44] ; 提供其他有符号整数类型以满足特殊需求.


[44]:即大到足以包含INT_MIN和INT_MAX范围内的任何值,如标题中所定义.

基本上,基本类型的大小不是一成不变的,而是实现定义的.这个SO问题的公认答案有一些信息.