c - 数组函数只返回第一个元素,我需要整个数组。请帮助

标签 c syntax-error

在函数 returnAvg 中,我需要返回一个数组的代码,但它只返回我不熟悉指针的第一个元素。 ar[0] 是完全平均的,但 ar[1] 总是 0 为什么会这样?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double returnAvg(int allTest[2][2],int students,int test);


int main ()
{
    int students = 2, test = 2, i,j;
    int allTest[students][test];
    double ar[students];

    for(i = 0; i < students; i++){
        for(j = 0; j < test; j++){
            printf("Student [%d] test [%d] score was> ", i + 1, j + 1);
            scanf("%d", &allTest[i][j]);
        }
    }
    *ar = returnAvg(allTest, students, test);

    for(i = 0;i<students;i++){
        printf("\nthe average score of student[%d] is : %.2lf\n",i+1, ar[i]);
    }

    return 0;
}
double returnAvg(int allTest[2][2],int students,int test){
    int i,j;
    double avg[students];

    for(i=0;i<students;i++){
        int sum = 0;
        for(j=0;j<test;j++){
            sum += (allTest[i][j]);
        }
        avg[i] = (float)sum/test;
    }
    return *avg;
}

最佳答案

您试图将局部数组返回给其他错误的函数。

当你的函数返回时,它的本地内存消失了..

您需要对该数组使用 Malloc,然后返回它的指针

double* returnAvg(int allTest[2][2],int students,int test){
    int i,j;
    double *avg;

   avg = malloc(sizeof(double) * students);


    for(i=0;i<students;i++){
        int sum = 0;
        for(j=0;j<test;j++){
            sum += (allTest[i][j]);
        }
        avg[i] = (float)sum/test;
    }
return avg;
}

不要忘记在使用后释放内存 :)

关于c - 数组函数只返回第一个元素,我需要整个数组。请帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29598699/

相关文章:

c++ - 用作自己的初始化程序的未初始化变量的行为是什么?

c - 将字符串输入到期望整数值的变量时无限循环

javascript - 语法错误: Unexpected token import - reactjs

linux - UFW 插入 [number] 抛出错误

php - PHP解析/语法错误;以及如何解决它们

c - 学习openCV : Use the pointer element to access cvptr2D to point to the middle 'green' channel. 在20,5和40,20之间绘制矩形

C 通过读取系统调用在我的缓冲区中查找换行符

java - 我的 Java 代码出错

php - 如何在 PHP 客户端和 C 守护程序服务器之间进行 IPC?

prolog - 运算符(operator)预期错误-前言