2

在将数组传递给函数后,我遇到了从数组中取出垃圾的问题。这是将其传递给仅将其打印出来的函数的正确方法吗?

while(infile){
        infile >> batch;
        infile >> amount;
        cout << batch << "     " << amount<< endl;
        totalChocolates[batch-1]+=amount;   
        chocolateBatches[batch-1]++;

    }

    //header();
    print(totalChocolates,chocolateBatches);

    system("pause");
    return 0;

void print(int *total,int *batch)
{
    for(int i = 0;i<size;i++)
    {
        cout << i+1 << "     "  << batch[i] << "     " << total[i] << endl;

    }
}

好的,我退出了该功能,但我仍然收到垃圾。

while(infile>> batch >> amount){
        //infile >> batch;
        //infile >> amount;
        cout << batch << "     " << amount<< endl;
        totalChocolates[batch-1]+=amount;   
        chocolateBatches[batch-1]++;

    }
    for(int i = 0;i<size;i++)
    {
        cout << i+1 << "     "  << chocolateBatches[i] << "     " << totalChocolates[i] << endl;

    }

它返回

1     64
8     907
18     1133
9     636
3     1134
16     1101
6     313
7     791
7     1130
1     1221
20     332
22     697
6     807
2     36
2     747
16     1219
3     859
18     639
18     312
7     1079
10     1074
5     678
18     59
1     -858993418     -858960818
2     -858993429     -858971910
3     -858993421     -858963346
4     -858993431     -858970692
5     -858993427     -858963901
6     -858993416     -858961011
7     -858993417     -858960812
8     -858993421     -858961874
9     -858993417     -858960079
10     -858993418     -858960161
11     -858993422     -858963562
12     -858993428     -858970812
13     -858993460     -858993460
14     -858993427     -858967859
15     -858993422     -858964267
16     -858993418     -858954549
17     -858993423     -858966453
18     -858993423     -858964725
19     -858993460     -858993460
20     -858993433     -858973375
21     -858993419     -858963644
22     -858993426     -858968664
23     -858993456     -858993060
24     -858993460     -858993460
25     -858993455     -858990222
Press any key to continue . . .
4

1 回答 1

3

差不多,是的。问题是,您没有正确使用数组的大小,因此您可能只是在最后遇到未初始化的空间。还要将大小传递给print函数,这样你就不会跑到最后。

编辑:尽管在您的问题评论中注意 Kerrek 的警告。

于 2012-09-17T20:37:18.907 回答