C 将多维数组作为指针传递给函数

C 将多维数组作为指针传递给函数,c,arrays,function,pointers,multidimensional-array,C,Arrays,Function,Pointers,Multidimensional Array,我必须将两个数组(尺寸为5X4的A和B)传递给两个函数,这两个函数分别称为函数_1和函数_2。数组、列和行都应作为指针传递。函数_1将获取数组中的每个元素,并计算A中每个元素的素因子之和((借助另一个名为sumPrime的函数),然后将这些和存储在数组B中。函数_2必须同时打印A和B数组。(正常数数组和素因子和数组).程序中有一些补充内容现在并不重要,但我也将在清晰性方面展示它们 #include <stdio.h> #include <stdlib.h> #define

我必须将两个数组(尺寸为5X4的A和B)传递给两个函数,这两个函数分别称为函数_1和函数_2。数组、列和行都应作为指针传递。函数_1将获取数组中的每个元素,并计算A中每个元素的素因子之和((借助另一个名为sumPrime的函数),然后将这些和存储在数组B中。函数_2必须同时打印A和B数组。(正常数数组和素因子和数组).程序中有一些补充内容现在并不重要,但我也将在清晰性方面展示它们

#include <stdio.h>
#include <stdlib.h>
#define ROW 5
#define COL 4
# include <math.h>
int sumPrime(int number){
     int factor = 2;
     int sum=0;

    while(1!=number){
       if(number%factor==0){
          number /= factor;
          sum+=factor;

          factor = 2;
          continue;
        }
        factor++;
    }

    return sum;
}
int FUNCTION_1(int *a[][20],int *b[][20],int row, int col){
    int c,d;
    for(c=0;c<row;c++){
        for(d=0;d<col;d++){
             b[c][d]=sumPrime(a[c][d]);
            return b[c][d];
        }
    }


}
void FUNCTION_2(int *x[][20],int *y[][20],int rows, int cols){
    printf(" \n A matrix is :\n");
    int e,f;
    for(e=0;e<rows;e++){
        for(f=0;f<cols;f++){
            printf("A[%d][%d] is %d\n",e,f,x[e][f]);



        }
    }
    printf("\n B matrix is:\n");
    for(e=0;e<rows;e++){
        for(f=0;f<cols;f++){
            printf("A[%d][%d] is %d\n",e,f,FUNCTION_1(x,rows,cols,y,rows,cols));



        }
    } 
}






int main(){


    int A[ROW][COL]={0};
    int B[ROW][COL]={0};
    int x=1;
    int i;
    int j;

    for(i=0;i<ROW;i++){

        for(j=0;j<COL;j++){
            A[i][j]=x;
            x=x+2;

        }                                   
    }
    printf("%d",A[0][0]);




    return 0;

}
#包括
#包括
#定义第5行
#定义第4列
#包括
整数素数(整数){
整数因子=2;
整数和=0;
while(1!=数字){
如果(数字百分比因子==0){
数字/=系数;
总和+=因子;
系数=2;
继续;
}
因子++;
}
回报金额;
}
int函数_1(int*a[][20],int*b[][20],int行,int列){
int c,d;

对于(c=0;c,你对矩阵的定义是错误的。。 使用:
func(int*a[20],int cols)
在本例中,您将有20行, 或
func(int a[][20],int行)

如果列为固定值,则为列定义一些宏。

此外,我应该在主函数中应用函数_1还是应用函数_2就足够了?主函数中的相应代码是什么?抱歉,我想我指的是指针。无论如何,尝试搜索此站点,而不是仅仅发布到它:这将是一个好方法开始位置。您可能需要将参数声明(如
int*a[][20]
替换为
int a[][20]
int(*a)[20]
。我假设我的问题是处理多个数组、指针和调用它们的函数。只需要一点推动。但是每个函数都包含两个矩阵,而不仅仅是1。对于这种情况,我应该如何定义?我应该如何在主函数中调用这些函数?如果在比较时知道矩阵大小(如您定义的行和列),那么最好的方法是-func(inta[ROW][COL],intb[ROW][COL]),当使用from-main:inta[ROW][COL]=values…时,只发送参数名“func(a,b)”。在这种情况下,我可以打印一个矩阵,但b仍然为零,这里指向数组的指针在哪里?我看不到任何*。知道吗?