Что такое 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.
Вы можете посмотреть несколько книг о деталях о указателе и массиве.