将数组作为对函数的引用传递

Passing array as reference to function

本文关键字:引用 函数 数组      更新时间:2023-10-16
#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。

你的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;

您没有使用: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;
}