今天在做题时,发现定义整型数组a[10],并赋初值,然后我访问a[11],输出0,再a[11]=3后访问a[11],输出3,a的长度还是10,那么a[11]存在哪里了?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
a[11]表示紧跟在前10个整型内存空间的一个整型大小的内存空间中的值。
定义整型数组a[10],意味着系统分配了10倍整型大小的空间,如果存储一个整型用4个字节的内存空间来存储,那么系统分配了连续的40个字节的内存空间,a[0]就对应这40个字节的头4个字节的内容,即第一个整型值,a[1]就对应这40个字节的第二组4个字节的内容,以此类推,因为数组被定义为整型,所以下标每变化一个单位对应着4个字节的存储空间,那么,a[11]就对应着紧随这40个字节之后的4个字节的内容,而数组下标的递增对应的是地址的连续的变化(在这里,当然是每隔4个字节)。
打个比方,比如,一个人爬楼梯,他计划爬10层,当他爬到第十层时,他又多爬了一层,显然这多出来的一层是存在的;如果问题是这样的,这个人爬楼梯实际上是参观,他申请了10层,而管理者接受了他的申请并允许他参观连续的10层,并告诉他从第一层在哪里,当他参观完10层后,意外地发现11层也可以参观,显然,参观紧挨着前10层的这一层是没有被授权的,然而他自己并不知道多参观这一层会有什么后果,尽管他参观了,并留下了他的脚印...