2015-06-02 2 views
1

Я хочу передать 2D-символ массив для работы.`Невозможно преобразовать 'char (*) [50]' в 'char **' для аргумента '1' to 'void prac (char **)'` при передаче 2D-массива в функцию

Однако ошибка приходит:

Невозможно преобразовать 'символ (*) [50]' в 'гольца **' для аргумента '1' до 'ничтожной PRAC (символ **)'

Как я могу исправить код? Пожалуйста, помогите мне.

Код:

#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; 
} 

ответ

3

Имя двумерного массива преобразуется («распад») в указатель на адрес первой строки массива. Так что используйте

void prac(char b[][50]) 

или

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

вместо

void prac(char **b) 

Ваш компилятор жаловался, потому что a не может быть преобразован в char**.