函数调用有问题

时间:2014-11-26 21:10:56

标签: c++ function-call

我有三个数组:一个字符串,一个int和一个double。我需要通过从main函数调用它们到另一个函数来输出它们的内容。当我尝试构建程序时,displayEmployeeInformation中出现“找不到标识符”的错误。这是我的代码:

#include <iostream>
#include <string> 
using namespace std;

const int numEmp = 5;
string names [numEmp];
int ages [numEmp];
double salaries [numEmp];

int main () {
    const int numEmp = 5;
    string names [numEmp];
    int ages [numEmp];
    double salaries [numEmp];

    for (int i = 0; i < numEmp; i++) {
        cout << "Enter Employee #" << i+1 << " Name: ";
        cin >> names [i];
        cout << "Enter Employee #" << i+1 << " Age: ";
        cin >> ages [i];
        cout << "Enter Employee #" << i+1 << " Salary: ";
        cin >> salaries [i];
    } 

    displayEmployeeInformation (names, ages, salaries, 5);

    getchar();
    getchar();

    return 0;
}

int displayEmployeeInformation (string names [], int ages [], double salaries [], int size) {
    for (int x = 0; x < numEmp; x++) {
        cout << "Employee #"  << x+1 << " Name: " << names [x] << ", Age: " << ages [x] << ", Salary: " << salaries [x];
    }

    return 0;
}

3 个答案:

答案 0 :(得分:4)

您需要为该函数添加函数原型。把这一行

int displayEmployeeInformation (string names [], int ages [], double salaries [], int size);

以上int main()

或者,将整个函数定义放在int main()上面。

答案 1 :(得分:0)

正如Bathsheba在一个很好的答案中已经指出的那样,将函数定义放在main之上或声明一个函数原型。

我还认为你的函数返回类型可能是void,因为你没有对返回的值做任何事情:

void displayEmployeeInformation(string names [], int ages [], 
                                double salaries [], int size) {
  for (int x = 0; x < numEmp; x++) {
    cout << "Employee #"  << x+1 << " Name: " << names [x] 
         << ", Age: " << ages [x] << ", Salary: " << salaries [x];
  }
}

答案 2 :(得分:0)

首先考虑到你定义了两次相同名称的数组:在全局命名空间和函数main的块范围内

//...
const int numEmp = 5;
string names [numEmp];
int ages [numEmp];
double salaries [numEmp];

int main () {
    const int numEmp = 5;
    string names [numEmp];
    int ages [numEmp];
    double salaries [numEmp];

/...

您可以勇敢地删除全局命名空间中的定义。:)

对于函数调用,函数声明应出现在函数使用之前。

您可以在main或main main之前放置函数声明,但无论如何在函数调用之前。例如

int displayEmployeeInformation (string names [], int ages [], double salaries [], int size);
int main () {

此函数也可以被decalred为类型为void,因为返回的值没有多大意义。

该函数可以声明为

void displayEmployeeInformation ( const string names [], const int ages [], const double salaries [], int size);

同样最好定义一个包含名称,年龄和薪水数据成员的结构数组。