这里是我的代码:如何将指针传递给函数?
#include <stdio.h>
#include <stdlib.h>
void AverageOfAss(float marks[][101], int numStudents, int numAss, float *avg[]) {
int i, j;
for (j=0; j<numAss; j++) {
*avg[j] = 0;
for (i=0; i<numStudents; i++) {
*avg[j] += marks[i][j];
*avg[j] = *avg[j]/(float)numStudents*100;
return ;
}
}
}
void PrintAvg(float *avg[], int numAss) {
int i;
for (i=0; i<numAss; i++) {
printf("Average for Exam %d = %.1f\n", i, *avg[i]);
return;
}
}
int main(int argc, char* argv[]) {
float grades[1001][101], avgAss[1001];
float *p;
int i, j, row, col;
p = avgAss;
row = atoi(argv[1]);
col = atoi(argv[2]);
FILE *input_grades;
input_grades = fopen("grades.txt", "r");
// READ IN GRADES
for (i=0; i<row; i++) {
for (j=0; j<col; j++) {
fscanf(input_grades, "%f, ", &grades[i][j]);
}
}
// OUTPUT GRADES LIST
printf("==================================\n");
printf("Student grades from the input file\n");
printf("==================================\n");
for (i=0; i<row; i++) {
printf("\n");
for (j=0; j<col; j++) {
printf("%.1f, ", grades[i][j]);
}
}
printf("\n\n");
AverageOfAss(grades, row, col, &avgAss);
PrintAvg(&avgAss, col);
fclose(input_grades);
}
一切都只是正常的,当我试图在终端上执行代码,它表现出一些警告:
不兼容的指针类型,把“浮动( *)[1001]”到参数类型的 '浮动**'
AverageOfAss(等级,行,列,& avgAss);
传递参数参数 '平均' 这里
空隙AverageOfAss(浮动马克[] [101],诠释numStudents,整数numAss,浮*平均[]){
不相容指针类型传递 '浮动(*)[1001]' 到参数类型的 '浮动**'
PrintAvg(& avgAss,列);
传递参数参数 '平均' 这里
无效PrintAvg(浮动*平均[],INT numAss){
有谁知道发生了什么事我的代码?我应该如何解决它? (新手在这里)
无关,即*即使在修改调用两端的参数类型后,也不会正确计算平均值。并且计算for-loop和报告for-loop都有'return;'埋在循环体中。我怀疑你希望他们只迭代一次,然后返回给调用者。 – WhozCraig
这正是我现在所面临的问题,就像代码工程一样,但它计算的平均值是错误的,我不知道它是如何得到数字的。你知道我的代码有什么问题吗? – user6089062