(C ++)我的函数不返回数组

时间:2018-08-26 12:51:23

标签: c++ arrays function

我是C ++编程的新手。在下面的代码中,我希望用户输入员工人数和每位员工的销售额。然后程序将为每个员工写相应的销售额。尽管编译器没有给出错误,但是它没有用。您能帮我找到错误的地方吗?预先感谢。

#include <iostream>
using namespace std;

int enterSales(int max){
    int sales[max];
    for (int idx=0;idx<max;idx++){
        cout<<"Enter the amount of sales for person #"<<idx<<": ";
        cin>>sales[idx];
    }
    return sales[max];
}

float showSalesComm(int max){
    int sales[]={enterSales(max)};
    for (int idx=0;idx<max;idx++){
        cout<<"The amount of sales for person #"<<idx<<": ";
        cout<<sales[idx]<<endl;
    }
    return 0;
}

int main () {

    int max;
    cout<<"Enter the number of employees.";
    cin>>max;
    showSalesComm(max); 

    return 0;
}

1 个答案:

答案 0 :(得分:1)

您可以使用std::vector<int>代替数组。在C / C ++中,数组在传递给函数时会分解为指针。使事情变得困难。

使用std::vector<int>将负责分配和删除,最重要的是,您可以从函数(复制构造)中返回它们,而不会出现临时或任何问题。

这是方法。

#include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::cin;
using std::endl;

vector<int> enterSales(int max){
    int temp;
    vector<int> a;
    for (int idx=0;idx<max;idx++){
        cout<<"Enter the amount of sales for person #"<<idx<<": ";
        cin>>temp;
        a.push_back(temp);
    }
    return a;
}

void showSalesComm(int max){
    vector<int> sales=enterSales(max);
    for (int idx=0;idx<max;idx++){
        cout<<"The amount of sales for person #"<<idx<<": ";
        cout<<sales[idx]<<endl;
    }
}

int main () {

    int max;
    cout<<"Enter the number of employees.";
    cin>>max;
    showSalesComm(max); 
    return 0;
}

实际上,您的代码中有很多错误。返回临时和索引超出范围等。禁用编译器扩展,它将显示警告。