2012-06-08 2 views
1

У меня есть печать FUNC, как показано ниже:Как преобразовать двумерный массив символов в char **?

void print(char **p) 
{ 
    cout<<p[0]<<endl; 
} 

Вот моя главная функ

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    char a[50][50]; 
    strcpy(a[0], "hello"); 
    print(&a[0]); 
} 

Отпечаток FUNC вызов получите ошибку компиляции. Мой вопрос не изменяет определение функции печати, как мне изменить вызов функции печати, чтобы он распечатывал привет?

Обновление: следующий код будет работать.

char *temp=a[0]; 
print(&temp); 

ответ

0

Вам не нужно преобразовывать любые значения. Если вы вызываете функцию с массивом в качестве параметра, это всегда указатель. На мой взгляд, вам просто нужно позвонить

печать (a [0]);

То, что вы сделали, вызовет char * как параметр.

+0

попытался, вы получите ошибку компиляции, не можете преобразовать параметр1 из char [50] в char **. – GLP

+0

Правильно, если вы это сделаете, вам нужно изменить на это: void print (char * p) Если вы действительно хотите поместить 2D-массив, то вы должны сделать это следующим образом: print ((char **) a) ; Я не знаю, почему ... – Felix

Смежные вопросы