将二维数组传递给函数时,无法将参数“1”的 'char(*)[50]' 转换为 'char**' 到 'void prac(char**)'

`Cannot convert 'char(*)[50]' to 'char**' for argument '1' to 'void prac(char**)'` when passing a 2D array to a function

我想将二维字符数组传递给函数。

然而,出现错误:

Cannot convert 'char(*)[50]' to 'char**' for argument '1' to 'void prac(char**)'

如何修复代码?请帮我。

代码:

#include <iostream>
using namespace std;

void prac(char **b)
{
        for(int i=0;i<50;i++)
        {
                for(int j=0;j<50;j++)
                {
                        cout << b[i][j] << " ";
                }
                cout << endl;
        }
}

int main()
{
        char a[50][50];
        for(int i=0;i<50;i++)
        { 
                for(int j=0;j<50;j++)
                {
                        cin >> a[i][j];
                }
        }

        prac(a); // error position

        return 0;
}

二维数组的名称被转换 ("decay") 为指向数组第一行地址的指针。所以使用

void prac(char b[][50])

void prac(char (*b)[50])

而不是

void prac(char **b)

您的编译器报错,因为 a 无法转换为 char**