大一C语言,求解答一下

题目:将一个二维double数组复制到另一个二维数组
问题:在定义第二个函数的时候报错了,为什么会错,又要怎么改?

img

#include <stdio.h>
#define x 3
#define y 2
void copyone(double* p1, double* p2, int n);
int copy(double(*ptra)[y], double(*ptrb)[y]);
//int add(double(*ptra)[LEN], double(*ptrb)[LEN];

int main()
{
    double a[] = { 1,2,3,4,5, };
    double b[5];
    double c[x][y] = { 1.1,2.1,3.1,4.1,5.1,6.1 };
    double d[x][y];
    double e[x][y] = { 2.1,2.2,2.3,2.4,2.5,2.6 };
    copyone(a, b, 5);
    copy(c, d);
    return 0;
}
void copyone(double* p1, double* p2, int n)
{
    for (int i = 0; i < n; i++) {
        *(p2 + i) = *(p1 + i);
        printf("%.0lf\t%.0lf\n", *(p1 + i), *(p2 + i));
    }
}
int copy(double(*ptra)[], double(*ptrb)[])
{
    for (int i = 0; i < x; i++) {
        copyone(ptra + i, ptrb + i, y);
    }
}


运行结果及报错内容

img


#include <stdio.h>
#define x 3
#define y 2
void copyone(double* p1, double* p2, int n);
int copy(double(*ptra)[y], double(*ptrb)[y]);
//int add(double(*ptra)[LEN], double(*ptrb)[LEN];
int main()
{
    double a[] = { 1,2,3,4,5, };
    double b[5];
    double c[x][y] = { 1.1,2.1,3.1,4.1,5.1,6.1 };
    double d[x][y];
    double e[x][y] = { 2.1,2.2,2.3,2.4,2.5,2.6 };
    copyone(a, b, 5);
    double (*c1)[y] = c;
    double (*d1)[y] = d;
    copy(c, d);
    return 0;
}
void copyone(double* p1, double* p2, int n)
{
    for (int i = 0; i < n; i++) {
        *(p2 + i) = *(p1 + i);
        printf("%.0lf\t%.0lf\n", *(p1 + i), *(p2 + i));
    }
}
int copy(double(*ptra)[y], double(*ptrb)[y])
{
    for (int i = 0; i < x; i++) {
        copyone(ptra[i], ptrb[i], y);
    }
    return 0;
}