【问题标题】:`Cannot convert 'char(*)[50]' to 'char**' for argument '1' to 'void prac(char**)'` when passing a 2D array to a function [duplicate]将二维数组传递给函数时,`Cannot convert 'char(*)[50]' to 'char**' for argument '1' to 'void prac(char**)'`
【发布时间】:2015-08-15 21:13:34
【问题描述】:

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

但是,错误来了:

无法将参数 '1' 的 'char(*)[50]' 转换为 'char**' 到 '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;
}

【问题讨论】:

    标签: c++ function char argument-passing


    【解决方案1】:

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

    void prac(char b[][50])
    

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

    而不是

    void prac(char **b)
    

    您的编译器抱怨,因为 a 无法转换为 char**

    【讨论】:

      猜你喜欢
      • 2012-10-23
      • 2018-06-13
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多