您如何精确地通过函数的参数传递数组?

时间:2019-04-14 23:30:32

标签: c++ codeblocks

我有一个班级的项目,该项目基本上从输入文件中读取3个学生的信息(每个学生有3个课程和5个测试以及他们的姓名,ssn,电话号码等信息),并存储输入以数组形式排列,然后将信息输出到输出文件中。该项目必须分为6个功能,不包括主要功能。

我可以成功读取和存储信息,但是当我转到“ validateData”函数时,我的数组未传递给该函数,因此它将无法对其进行验证。在其他所有功能中也会发生此错误。我认为这可能是函数原型的错误,因为这是我对此最困惑的地方。

我尝试将原型参数更改为(string [],int [],double []),因为我有3个不同的数组,一个数组用于字符串,一个数组用于int,另一个数组用于double。但这没有用。除了没有这些“ []”,我还尝试了相同的操作,但仍然无法正常工作,我认为错误是表示编译器无法将double *更改为double,反之亦然。

//Declaring global constants
const int STUDENTS = 3;
const int NONNUMERIC_INFO = 9;
const int NUMERIC_INFO = 2;
const int COURSES = 3;
const int TESTS_and_CNG = 6;
//Above main function, Function prototype
void validateData(string [], int [], double []);
//Inside main function, Function call
    validateData();
//Declaring Arrays (inside of a different function called inputData)
string nonNumeric1[STUDENTS][NONNUMERIC_INFO];
int numeric1[STUDENTS][NUMERIC_INFO];
double numeric2[STUDENTS][COURSES][TESTS_and_CNG];
//Under main function, Function definition
void validateData(string, int, double)
{
 //A bunch of if statements that i will soon turn into for loops, but will save you guys the trouble of reading them all, as its not important to the question.
}

我期望将数组传递到函数中,但是它没有这样做,并给我一个错误,指出“错误:函数的参数太少'void validateData(std :: __ cxx11 :: string *,int *,double *)'“我不知道错误消息试图说什么。

1 个答案:

答案 0 :(得分:0)

原型功能很好,但是功能标题行不匹配。

您的原型

//Above main function, Function prototype
void validateData(string [], int [], double []);

您的功能

void validateData(string, int, double)

第二,尽管您的原型可能不需要变量名,但是您的函数标题行确实需要。

void validateData(string, int, double),此处的函数只有变量类型。如果您对声明函数不完全熟悉,那么我会查看类似declaring functions的教程。

最后,一旦您将原型函数标题行和实际函数标题行进行了匹配,并为实际函数参数提供了变量名,就需要修复函数调用。

您可以这样调用函数:validateData();这又一次与您的函数标题行不匹配。您的函数标题行说validateData包含一个string arrayint和一个double。您的函数调用未传递任何()。如果您希望arrayintdouble出现在函数中,则需要在函数调用中传递它们。 validateData(some_array, some_int, some_double)

请不要忘记将some_arraysome_int ...等替换为具有各自类型的实际变量。

编辑:

如果您想在validateData内部调用inputData方法,则必须执行以下操作:

void inputeData(....) {

 validateData(some_array, some_int, some_double);
}