#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];
    }
}
在for循环之后,它应该只显示列表[2]的值61次; 列表[30] = 30并列出[0] = 31,所以组合它们是61. for循环中的表达式是否有效?它似乎永远循环.
使用lists[29],你超出了数组的界限.记住索引是从0开始的,而不是从1开始的.
默认情况下,C++没有对数组进行边界检查,因此:
int array[100];
array[100] = 1;
是相同的:
int* array = calloc( 100, 4 );
*(array + 100) = 1;
...在内存中数组范围之外是+1元素.您正在写入未分配的空间,导致未定义的行为.
| 归档时间: | 
 | 
| 查看次数: | 71 次 | 
| 最近记录: |