C ++错误:'int [100]'|的初始化程序太多

时间:2014-09-21 14:49:25

标签: c++

int SUM[100]= {    0,1,5,2,8,3,9,2,8,7,7,
                8,4,7,3,8,4,1,5,4,4,5,
                9,6,2,7,3,6,2,1,1,2,8,
                1,7,2,8,5,9,8,8,9,3,0,
                6,1,7,0,6,5,5,6,2,5,1,
                6,2,9,3,2,2,3,7,4,0,5,
                1,4,0,9,9,0,6,9,5,0,6,
                3,7,6,6,7,1,8,4,9,5,8,
                4,3,3,4,0,3,9,4,0,7,1,
                0,0};

如果我删除“100”并输入“int SUM []”,一切正常。为什么?

2 个答案:

答案 0 :(得分:14)

因为101个数字不适合100个元素数组。

int SUM[100];表示该数组恰好有100个元素,索引范围为0到 99 意味着100是最后一个有效索引!这似乎是初学者的常见误解。

我总是记得这样:有10位数字,即0到9.但是没有数字10:)

答案 1 :(得分:4)

int SUM[X];

此语法表示您拥有X大小的数组。

int SUM[] = {1,2};

此语法会自动计算数组大小以及用于初始化它的元素数量,例如在上例中 SUM 大小为2。

在您提供100时遇到问题时,您说要为100元素分配数组,当您没有提供任何数字时,它会自动计算元素数并分配数组大小因此。 如果您计算用于填充数组的元素 101 ,那么要存储这些元素,您需要大小 101 的数组。因此,要么声明SUM[101],要么将其留空以自动检测数组大小。