黑马程序员技术交流社区
标题: 关于数组越界的问题 [打印本页]
作者: Eil.tea 时间: 2015-7-26 23:10
标题: 关于数组越界的问题
char h[]="123";
sizeof(h)毫无疑问是4;
h[4]='a';
这样的不报错的,只是给了个提示,说数组是包含4个元素。当我打印出这5个元素的地址的时候,我发现前4个地址,是连续的,后边定义的a[4]与上边的地址不连续。我可以理解成a[4],就相当于另外定义的一个变量。
--------------------------我是可爱的分割线--------------------------------
有了上边的结果,我改变了定义
char h[7]="123";
sizeof(h)成了7,可是当我打印出所有元素的地址的时候,我发现,地址依然是前4个连续,后边的不连续。于是我清空了缓存,重新执行了一次,结果还是一样。有谁能解释一下吗?
为什么我定义的数组开辟的空间不连续呢?
作者: wy911011 时间: 2015-7-27 12:08
亲测,是连续的
char ch[7]="123";
printf("%p\n",&ch[0]);
printf("%p\n",&ch[1]);
printf("%p\n",&ch[2]);
printf("%p\n",&ch[3]);
printf("%p\n",&ch[4]);
printf("%p\n",&ch[5]);
printf("%p\n",&ch[6]);
输出结果:
0x7fff5fbff809
0x7fff5fbff80a
0x7fff5fbff80b
0x7fff5fbff80c
0x7fff5fbff80d
0x7fff5fbff80e
0x7fff5fbff80f
作者: 我丶就这样 时间: 2015-7-27 15:22
围观学习!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |