vs2019多维数组与函数问题。c语言

vs2019多维数组与函数问题。


double average2d(int n, int m, double(*a)[])
{
    double sum = 0.0;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            sum +=a[i][j];
}

img

这段代码的问题在于函数缺少返回语句,应该将求平均数的结果返回。同时,指针参数 a 的类型声明也需要进行修改。

以下是修改后的代码:

double average2d(int n, int m, double a[][m])
{
    double sum = 0.0;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            sum += a[i][j];
    return sum / (n * m);
}

在函数定义中,我们将指针参数 a 的类型声明修改为 double a[][m],这样可以指定它是一个二维数组。在计算平均数时,我们需要将二维数组中的所有元素求和,并将结果除以元素总数。最后,我们将计算出的平均值作为函数的返回值。

*(a+i)[j]

double(*a)[]        //这种定义形式为指向一维数组(指向行)的指针
*(a+i)              //这是转变为指向数组元素(指向列)的指针
*(*(a+i)+j)         //这是得到数组元素值的形式