#include <iostream>
using namespace std;
int main()
{
int lists[30];
lists[30] = 30;
lists[0] = 31;
cout << lists[30];
cout << "\n";
cout << lists[0];
for(int a = 0; a < lists[30]+lists[0]; a++)
{
cout << "\n";
cout << lists[2];
}
}
Run Code Online (Sandbox Code Playgroud)
在for循环之后,它应该只显示列表[2]的值61次; 列表[30] = 30并列出[0] = 31,所以组合它们是61. for循环中的表达式是否有效?它似乎永远循环.
使用lists[29],你超出了数组的界限.记住索引是从0开始的,而不是从1开始的.
默认情况下,C++没有对数组进行边界检查,因此:
int array[100];
array[100] = 1;
Run Code Online (Sandbox Code Playgroud)
是相同的:
int* array = calloc( 100, 4 );
*(array + 100) = 1;
Run Code Online (Sandbox Code Playgroud)
...在内存中数组范围之外是+1元素.您正在写入未分配的空间,导致未定义的行为.