gpt4 book ai didi

c - 如何将带有指针的数组传递给函数?

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:56 27 4
gpt4 key购买 nike

这是我的代码:

#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);
}

一切正常,只是当我尝试在终端上执行代码时,它显示了一些警告:

  1. 将“float (*)[1001]”传递给参数的不兼容指针类型 类型为“float **”

    AverageOfAss(成绩、行、列、&avgAss);

  2. 在此处将参数传递给参数“avg”

    void AverageOfAss(float marks[][101], int numStudents, int numAss, float *avg[]) {

  3. 将“float (*)[1001]”传递给参数的不兼容指针类型 类型为“float **”

    PrintAvg(&avgAss, col);

  4. 在此处将参数传递给参数“avg”

    void PrintAvg(float *avg[], int numAss) {

有谁知道我的代码发生了什么?我该如何解决? (这里是新手)

最佳答案

问题是指向 float 数组的指针与指向 float 的指针不同。

错误消息实际上告诉您应该如何解决问题...编译器告诉您的是 &avgAss 的类型是 float(*)[1001] 而你的参数是 float ** 类型。所以你需要改变你的函数参数类型来匹配编译器的期望,比如 float (*avg)[1001]。然后你有一个问题 *avg[j] 实际上意味着 *(avg[j]) 而不是你需要的 (*avg)[j].

但是您根本不需要将指针传递给数组。你所需要的只是让数组自然地衰减到指向它的第一个元素的指针,所以你真正应该做的是将函数参数更改为 float *avg 并像普通数组一样使用它 平均[j]。当然,不要传递指向数组的指针,在调用中仅使用 avgAss

关于c - 如何将带有指针的数组传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36112375/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com