2010-12-13 4 views
0

я нашел следующее заявление в моей книге гр, может кто-нибудь объяснить:О 2d массива символьных указателей

char *dic[][40]={ 
"atlas", "A volume of maps", 
"car", "a vehicle", 
"telephone", "a communication device", 
"", "" 
    } 

Вот что значит, что 40 означает то, какое измерение это?

ответ

1

dic - это двумерный массив char*; его размеры равны 1 x 40.

40 указан в деклараторе, а 1 подразумевается тем фактом, что в инициализаторе имеется только один массив. Полный инициализатор будет иметь другой набор скобок, например,

char *dic[][40] = 
{ 
    { 
     "atlas",  "A volume of maps", 
     "car",  "a vehicle", 
     "telephone", "a communication device", 
     "",   "" 
    } 
}; 

С дополнительных скобок, то ясно, что неявное размерность 1.

Каждый элемент в двумерном массиве является указателем type char*. Первые восемь указателей инициализируются, чтобы указать на восемь строковых литералов, заданных в инициализаторе.

+0

ok thanks james – codeomnitrix

+0

Если размеры 1x40, почему бы просто не иметь одномерный массив? – Itsik

+0

@ Ицик: Не знаю. Вы должны спросить @codeomnitrix. –

3

Это действительно странный способ инициализации словаря.

Это 2D-массив из char* (строки с нулевым завершением (\0)).

Размеры [ряды] [столбцы].

Так у вас есть 1 строка (определяется инициализатором) и 40 столбцов строк,

где 8 из них инициализируется.

ПРИМЕЧАНИЕ: Вы уверены, что это не char dic[][40] (т. Е. Список строк максимальной длины 40)?

+0

ok thanks itsik. – codeomnitrix

0

Я думаю, что там может быть ошибка в книге, кажется, что они хотели словарь - 3D массив:


char *dic[][40]={ 
      {"atlas", "A volume of maps"}, 
      {"car", "a vehicle"}, 
      {"telephone", "a communication device"}, 
      {"", ""} 
     }; 
0

40 в коде означает максимальную длину символов (или общая длина строки) составляет 40.

Think char *dic[][40] как массив указателей. При этом один указатель указывает на максимум 40 символов.

+0

, что было бы правильно, если это 'char dic [] [40]', это фактически список из 40 строк. – Itsik