C语言 指针指向二维数组

用指针方法处理下列程序:定义一个3行2列的double型二维数组,再定义一个指向第0行的指针变量去指向二维数组,利用这个指针变量输入这3行2列的二维数组,再把这个指向第0行的指针变量作为函数参数,去调用void average(double (*q)[2])函数,在这个函数中只求出第1行的平均值,并输出

使用一个指向两个double类型元素数组的指针来指向这个3行2列的double数组,然后可以像使用二维数组名那样来访问这个3行2列的二维数组了,无论在main函数还是在average函数中,一个实现如下,供参考:


#include <stdio.h>

void average(double (*q)[2]){
    
    int i,j;
    double sum=0.0;
    for(i=0;i<2;i++){ //访问对1行的每一列 
        sum+=q[0][i]; //把第一行的每个数的值累加到和sum中 
    }
    printf("%lf",sum/2); //把第一行的和除以列数即为第一行的平均值,打印它 
    
}
int main(void){
    
    double arr[3][2];
    double (*p) [2] = arr; //使用一个指向2个double类型元素的数组的指针来指向3行2列的二维数组第一行 
    
    int i,j;
    for(i=0;i<3;i++){
        for(j=0;j<2;j++){ //用这个指针可以像使用二维数组名那样来访问这个3行2列的二维数组,给他赋值 
            scanf("%lf",&p[i][j]);
        } 
    }
    
    average(p);
} 

img