【发布时间】:2019-02-13 20:54:50
【问题描述】:
我正在尝试创建一个包含 200 个整数的数组,其中填充了整数 100-299。我目前有这个:
int myArray[200];
int j;
for(j = 100; j < 300; j++){
myArray[j] = j;
}
当我显示myArray[0] 和myArray[200] 时,它会显示随机的垃圾数字,所以我知道我的数组没有正确填充。我还有另一个数组,其中填充了 0-99 的 ints,它按预期工作。
【问题讨论】:
-
你从不写信给
myArray[0],所以你不应该期望它包含任何有意义的值 -
您正在迭代索引 100 到 299 处的元素,但您的数组的有效索引介于 0 到 199 之间。您的意思可能是
myArray[j-100] = j;而不是myArray[j] = j;。 -
既然
j可以高达299,那么当你给myArray[299]赋值时,考虑到数组只有200 个元素,你认为会发生什么? -
我还有另一个数组,其中填充了 0-99 的整数,它按预期工作。 -- 那是因为你很幸运你从 0 开始。你从来没有意识到如果您从不同的号码开始,该代码将不起作用。如果您从 -100 开始到 100
for (int j = -100; j <= 100; ++j),您的代码将如何工作?myArray[-100]对你有意义吗? -
有时您只需要仔细查看您编写的代码并问自己它实际上在做什么,而不是您认为它在做什么。