В информационных задачах часто необходимо запомнить отдельно несколько символьных строк, связанных друг с другом одной темой (общностью).
 Для хранения списка символьных строк используется двумерный массив размером n´s, где n – максимальное количество строк (студентов в группе, инструментов в наборе), s – максимальное количество символов в строке с учетом символа окончания строки ‘\0’.
 Например,
 char name[25][30];
 Для хранения массива name в оперативной памяти будет отведено 750 байт непрерывного пространства для хранения 25 строк длиной не более 30 символов каждая (с учетом символа окончания строки).
 Инициализация двумерного массива выполняется следующим образом:
 char name[25][30] = {
 {“Строка 1”},
 {“Строка 2”},
 :
 :
 {“Строка n”}
 };
 Внешние скобки ограничивают сам массив, а совокупность внутренних скобок { и } ограничивают текст каждой строки. Учитывая, что символы “ являются ограничителями символьной строки, то вместо внутренних скобок можно использовать символы “.
 Например,
 char g[3][15] = {
 “Иванов И. И.”,
 “Антонов Л. А.”,
 “Попов С. М.”,
 };
 Для экономии оперативной памяти и избежания переполнения выделенного пространства под строку (что приводит к потери конечных символов, в том числе символа окончания строки ‘\0’) применяют описание совокупности строк с использованием одномерного массива указателей, размер которого равен числу инициализируемых строк.
 Например,
 char *pg[3] = {
 “Иванов И. И.”,
 “Антонов Л. А.”,
 “Попов С. М.”,
 };
 Такое описание определяет массив, где количество строк равно количеству инициализируемых строк, а количество столбцов каждой строки массива определяется количеством символов в ней плюс символ окончания строки ‘\0’.
 В оперативной памяти выделяются ячейки как для хранения массива указателей, так и для хранения списка строк.Схема выделения оперативной памяти имеет вид
   |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
  |  | pg[0] | pg[1] | pg[2] |  |  |  |  |  |  |  |  |  |  |  |  |  | 
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
  |  | pg[0] |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
  |  | И | в | а | н | о | в |  | И | . |  | И | . | \0 |  |  |  |  | 
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
  |  | pg[1] |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
  |  | А | н | т | о | н | о | в |  | Л | . |  | А | . | \0 |  |  |  | 
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
  |  | pg[2] |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
  |  | П | о | п | о | в |  | С | . |  | М | . | \0 |  |  |  |  |  | 
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
 
 Компилятор выделяет три ячейки памяти для хранения элементов массива указателей pg, а также необходимое количество ячеек для хранения списка строк. Адреса каждой из строк записываются в соответствующие ячейки массива pg.