c语言字符数组遍历问题
用字符数组表达字符串“java”,那数组长度应该是5吧。请问一下为什么这样遍历不会报错?char str1[] = "java";
for (ii = 0; ii < 6; ii++)
printf("1B) str1[%d]='%c' (%d)\n", ii, str1, str1);
printf("\n"); 有的编译器应该不允许
这样也不安全 本帖最后由 SHRS23 于 2020-2-2 11:24 编辑
如果把循环次数再改大一点,你还能看到输出了一些奇怪的东西,那是存在字符串后面那一块内存里的内容。
不报错的原因是C语言不进行边界检查,越界访问会被视为普通的指针内存访问,如果那块内存是可读的,编译器不报异常。
建议参考:
https://www.zhihu.com/question/23440081
或者以 “C语言 数组索引越界” 为关键字自行查找资料
页:
[1]