首页 > 解决方案 > 一个大小为 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++arraysc

解决方案


仅仅因为 C 不检查数组边界。

超出数组边界的读取和写入在 C 中是一种未定义的行为,并且它在其他语言中返回异常(IndexOutOfBoundsException例如在 Java 中)。在您的情况下,尝试读取arr[i]只会显示存储在接下来 4 个字节的内存中的任何值(就在数组末尾之后)。

检查这个以获得进一步的解释:没有越界错误


推荐阅读