c++ - 一个大小为 5 的数组中可以插入多少个元素?
问题描述
如果我像这样在 C/C++ 中声明一个数组,int arr[5];
然后像这样在其中插入元素的循环
for(int i=0; i<5; i++){
arr[i] = i+1;
}
当我像这样打印这些元素时
for(int i=0; i<5; i++){
printf("%d ", arr[i]);
}
元素像往常一样打印,即1 2 3 4 5
但是如果这些循环像这样再运行一次
for(int i=0; i<=5; i++){
arr[i] = i+1;
}
和这个
for(int i=0; i<=5; i++){
printf("%d ", arr[i]);
}
然后输出是1 2 3 4 5 6
。
所以,我不明白大小为 5 的数组本身如何有 6 个元素?
解决方案
仅仅因为 C 不检查数组边界。
超出数组边界的读取和写入在 C 中是一种未定义的行为,并且它在其他语言中返回异常(IndexOutOfBoundsException
例如在 Java 中)。在您的情况下,尝试读取arr[i]
只会显示存储在接下来 4 个字节的内存中的任何值(就在数组末尾之后)。
检查这个以获得进一步的解释:没有越界错误
推荐阅读
- javascript - JavaScript 堆如何处理递归
- python - 通过交换特定元素生成列表的排列
- java - 利用 Spring Restdocs DSL 进行验证
- angular - 如果属性更新太快,UI 控件不会反映模型更改
- postgresql - 有没有办法在 Postgresql 中跟踪和调试查询?
- dart - 添加或删除项目时 SliverList 不更新
- r - 更新 R.3.5.1 C++11 依赖项中的 Rgdal...虽然 C++11 可用
- python - Python pandas:在遍历数据框时将信息附加到行
- git - AWS Codebuild -- 执行 buildspec.yml 时如何读取提交上的标签?
- excel - Excel - 如何查找具有匹配键的所有值?