Что такое char ** в C?

Возможный дубликат:
Что такое двойная звезда?

Я новичок в C и натолкнулся на это утверждение

typedef char **TreeType

У меня довольно хорошее представление о том, что делает typedef, но я никогда не видел char ** раньше. Я знаю, что char * - это массив char или похожий на строку. Я не уверен, что char ** - это массив 2d char или если он является указателем на массив символов. Я осмотрелся, но не могу найти, что это такое. Если вы могли бы объяснить, что означает char ** или указать мне в правильном направлении, это было бы очень оценено.

Спасибо!:)

Ответ 1

Технически, char* не является массивом, а указателем на char.

Аналогично, char** является указателем на char*. Сделать его указателем на указатель на char.

C и С++ определяют массивы за кадром как типы указателей, поэтому да, эта структура, по всей вероятности, представляет собой массив массивов char s или массив строк.

Ответ 2

Это указатель на указатель, так что да, в некотором смысле это 2D-массив символов. Точно так же, как char* может указывать массив из char s, a char** может указывать на то, что он указывает и массив из char* s.

Ответ 3

ну, char * означает точку указателя на char, она отличается от массива char.

char amessage[] = "this is an array";  /* define an array*/
char *pmessage = "this is a pointer"; /* define a pointer*/

И, char ** означает указатель на указатель char.

Вы можете посмотреть несколько книг о деталях о указателе и массиве.