"char" 类型的实参与 "char (*)[20]" 类型的形参不兼容

"char" 类型的实参与 "char (*)[20]" 类型的形参不兼容
#include
#include
int yundong(char c, char a[20][20], int x1, int y1);
int main()
{
    int i,x1, y1, x0, y0;
    char  c;
    char a[20][20] = {"################",
                      "#+########    ##",
                      "#      #   # # #",
                      "### ## ### #   #",
                      "#0# #      #####",
                      "# # ## ####   ##",
                      "# #  #      # ##",
                      "# ###########  #",
                      "#              #",
                      "################",
                  };
    x1 = 1, y1 = 1, x0 = 1, y0 = 4;
    for (i = 0; i <= 20; i++)
    printf("%s\n", a[i]);
    while (x1 != x0 || y1 != y0)
    {
        printf("上w,下s,左a,右d");
        scanf("%c", &c);
        system("color f5");
        a[20][20] = yundong(c, a[20][20], x1, y1);
        for (i = 0; i <= 20; i++)printf("%s\n", a[i]);
    }
    printf("你以成功通过第一关,第二关还在制作中");
    return 0;
}
int yundong(char c,char a[20][20],int x1,int y1)
{
    if (c == 'w')
        if (a[x1][y1 - 1] != '#')
        {
            a[x1][y1] = ' ';
            y1--;
            a[x1][y1] = '+';
        };
    if (c == 's')
            if (a[x1][y1 + 1] != '#')
            {
                a[x1][y1] = ' ';
                y1++;
                a[x1][y1] = '+';
            };
    if (c == 'a')
            if (a[x1 - 1][y1] != '#')
            {
                a[x1][y1] = ' ';
                x1--;
                a[x1][y1] = '+';
            };
     if (c == 'd')
            if (a[x1 + 1][y1] != '#')
            {
                a[x1][y1] = ' ';
                x1++;
                a[x1][y1] = '+';
            };
     return a[20][20];
}


严重性 代码 说明 项目 文件 行 禁止显示状态

错误(活动) E0167 "char" 类型的实参与 "char (*)[20]" 类型的形参不兼容 迷宫1.0 Y:\vs项目\迷宫1.0\源.cpp 27

return a[20][20]
你能写出这样的代码来,充分说明你连什么是定义什么是调用都没搞清楚,从基础语法重新恶补吧,语法没搞懂别着急写代码

你yundong函数定义第二个形参是char a[20][20]是一个二维数组应该接受一个二维数组名
但你函数调用那写的是a[20][20]是传了一个char类型字符,应该写成a