你究竟如何通过函数的参数传递数组?

How exactly do you pass arrays through the parameters of a function?

本文关键字:参数传递 数组 函数 究竟 何通过      更新时间:2023-10-16

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

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

我尝试将原型参数更改为 (string[],int[],double[]),因为我有 3 个不同的数组,一个用于字符串,一个用于整数,一个用于双精度。但这并没有奏效。我也尝试了同样的事情,除了没有这些"[]",仍然不起作用,我相信错误说编译器无法将双精度*更改为双精度,反之亦然。

//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*)'"我不知道错误消息想说什么。

原型函数做得很好,但您的函数标题行不匹配。

您的原型

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

您的职能

void validateData(string, int, double)

其次,虽然你的原型可能不需要变量名,但你的函数标题行肯定需要。

void validateData(string, int, double)这里的函数只有变量类型。如果您不完全熟悉声明函数,我会查看像声明函数这样的教程。

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

你像这样调用你的函数:validateData();这再次与您的函数标题行不匹配。你的函数标题行说validateData需要string arrayintdouble。您的函数调用不会传递任何()。如果你想让你的arrayintdouble出现在函数中,你需要在函数调用中传递它们。validateData(some_array, some_int, some_double).

不要忘记更换some_arraysome_int...等,具有实际变量及其各自的类型。

编辑:

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

void inputeData(....) {
validateData(some_array, some_int, some_double);
}