通过引用传递数组

时间:2012-09-17 20:35:16

标签: c++

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

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 . . .

1 个答案:

答案 0 :(得分:3)

差不多,是的。问题是,你没有正确使用数组的大小,所以你可能只是在最后运行到未初始化的空间。同时将大小传递给print函数,这样就不会跑到最后。

编辑:虽然在你的问题评论中注意到了Kerrek的警告。