所以,我有这个功能,我写了一个月前,并忘记完全它是如何工作的。为什么此函数返回的结果比返回的结果要多?
int readFile(int racerId_func[30], double raceData_func[30][8]) {
string fileLoc;
ifstream inFile;
int racersNum_func;
cout << "Enter an input filepath: "; // Type in the filepath
getline(cin, fileLoc);
inFile.open(fileLoc);
if (inFile.fail()) {
cout << "Error: Could not open file." << endl;
exit(1);
}
inFile >> racersNum_func; // Gets the number of racers
for (int i=0; i < racersNum_func; i++) {
inFile >> racerId_func[i]; // Assigns each racer's ID number
for (int j=0; j < 8; j++) {
inFile >> raceData_func[i][j];
}
}
return racersNum_func;
}
这是应该从文件中读取参赛者的数量,然后每个赛车手的ID和圈数。注意它只返回racersNum。现在,我呼吁这个功能,我的主要功能如下所示:
int racersNum, racersQual; // vars included for reference
int racersDis = 0;
int racerId[30];
double raceData[30][8];
double average[30];
racersNum = readFile(racerId, raceData); // I call it right here
不知何故,racerId和raceData也被传从功能回来,即使我只有回到racersNum。为什么是这样?我对回报如何工作有一个基本的误解?你需要看看我的整个计划吗?
你把它作为指针,所以该功能可以(做)修改它们 – sp2danny 2014-12-11 01:30:51
这有什么做'return',它与参数传递做。当你使用一个数组作为参数时,它不传递数组的副本,它将数组转换为一个指针并传递它。所以你的函数正在修改阵列。 – Barmar 2014-12-11 01:31:15
我希望你已经吸取了教训:_write documentation_。 – 2014-12-11 01:38:40