C ++中的数组值不正确

时间:2013-03-29 23:40:30

标签: c++ arrays visual-studio

我一直在这工作超过2个小时。我已将问题与一段代码隔离开来了。

问题出在我的阵列上。它输出了非常大的负值。我输入数组的值是正确的。我对java很有经验,但这是我的第一个C ++程序。

   #include <cstdlib>
   #include <iostream>
   #include <sstream>
   #include <string>

   using namespace std;

   int main(){
    string inputString;
    cin >> inputString;
    cout << inputString << endl;

    int mainArray[10];

    for(int x = 0; x < inputString.length(); x++){
        int valFound = inputString[x]-48; //minus 48 to change from ascii to int
        mainArray[valFound]++;
        cout << mainArray[valFound];
    }

    return 0;
    }

任何帮助都会非常感激,这让我很疯狂。

2 个答案:

答案 0 :(得分:6)

您的阵列正在默认初始化。类型int的默认初始化使其“垃圾”。您需要明确地将其初始化为0

int mainArray[10] = {0};

答案 1 :(得分:2)

这是因为需要初始化数组。将其添加到您的代码中:

for (int i = 0 ; i != 10 ; i++) {
    mainArray[i] = 0;
}

或者,您可以使用memset

memset(mainArray, 0, sizeof(mainArray));