传递数组作为函数的引用

时间:2013-12-05 17:10:29

标签: c++ arrays pointers reference

#include <iostream>

using namespace std;

void counter(int input[], int *output);

int main()
{
    int input[15], output[10] = {0};

    for (int i = 0; i < 15; i++)
        cin >> input[i];

    for (int i = 0; i < 10; i++)
        cout << i << " appears " << counter(input[], output[]) << " times in the input." << endl;

    return 0;
}

void counter(int input[], int *output){
    for(int i = 0; i < 15; i++){
        switch(input[i]){
            case 1:
                output[0]++;
            case 2:
                output[1]++;
            case 3:
                output[2]++;
            case 4:
                output[3]++;
            case 5:
                output[4]++;
            case 6:
                output[5]++;
            case 7:
                output[6]++;
            case 8:
                output[7]++;
            case 9:
                output[8]++;
            case 10:
                output[9]++;
        }
    }
}

我正在编写一个函数,我必须传递一个数组作为对它的引用,没有错误,但是当我尝试读取main函数中的元素时,它们在初始化时都是0。

2 个答案:

答案 0 :(得分:4)

你的counter()函数(你可以用更少的行写 - 这是以后的练习)返回void。

所以:

 cout < counter(foo, bar)

不打印任何一个数组的内容。它会打印void,如果这是有道理的。但由于这没有意义,这是一个编译错误。

你可能想要:

// fill input
for (int i = 0; i < 15; i++)
    cin >> input[i];

// fill output
counter(input,output);

// print contents of output
for (int i = 0; i < 10; i++)
    cout << i << " appears " << output[i] << " times in the input." << endl;

答案 1 :(得分:1)

你没有使用这个功能:D,请在打印前使用它:)

试试这个:

int main()
{
    int input[15], output[10] = {0};

    for (int i = 0; i < 15; i++)
        cin >> input[i];


    counter(input, output);

    for (int i = 0; i < 10; i++) {
        cout << i << " appears " << output[i] << " times in the input." << endl;
    }

    return 0;
}