Noob C ++人:为什么我的数组不工作?

时间:2017-10-20 03:26:39

标签: c++

#include <iostream>
using namespace std;

int main() {
    int scores [9] = { 100, 80, 60, 75, 95, 65, 85, 40, 70 };
    int total = 0;
    for (int i = 0; sizeof(scores); i++) {
        total += scores[i];
    }
    double average = (double) total / sizeof(scores);
    cout << average << endl;
    cin.get();
    return 0;
}

错误消息:TestProject.exe中0x002918F5处抛出异常:0xC0000005:访问冲突读取位置0x003A0000。

此代码存在问题,但我无法找到它。只是试图学习从Java转移的C ++中的数组。感谢。

2 个答案:

答案 0 :(得分:2)

sizeof(array)不返回数组中的元素数,而是返回字节数。它可用于通过sizeof(array) / sizeof(array[0])获取元素数量(请参阅How do sizeof(arr) / sizeof(arr[0]) work? 中的详细信息)

另外,xyious是正确的,你需要在for循环中提供一个实际的条件,所以你最终

for (int i = 0; i < sizeof(scores) / sizeof(scores[0]); i++) {

答案 1 :(得分:1)

你应该使用std :: vector而不是数组。 Bjarne Stroustrup在他的书中推荐大多数情况下的std :: vectors。

std::vector

Arrays vs Vectors: Introductory Similarities and Differences