netlib.narod.ru< Назад | Оглавление | Далее >

5.8. Инициализация массивов указателей

Напишем функцию month_name(n), которая возвращает указатель на строку символов, содержащую название n-го месяца. Эта функция идеальна для демонстрации использования статического массива. Функция month_name имеет в своем личном распоряжении массив строк, указатель на одну из которых она и возвращает. Ниже мы покажем, как инициализируется этот массив названий месяцев.

Синтаксис задания начальных значений аналогичен синтаксису предыдущих инициализаций:

  /* month_name: возвращает имя n-го месяца */
  char *month_name(int n)
  {
      static char *name[] = {
          "Неверный месяц",
          "Январь", "Февраль", "Март",
          "Апрель", "Май", "Июнь",
          "Июль", "Август", "Сентябрь",
          "Октябрь", "Ноябрь", "Декабрь"
      };

      return (n < 1 || n > 12) ? name[0] : name[n];
  }

Объявление name массивом указателей на символы выглядит так же, как и объявление lineptr в программе сортировки строк. Инициализатором служит список строк, каждой из которых соответствует определенное место в массиве. Символы i-й строки где-то размещены, и указатель на них запоминается в name[i]. Так как размер массива name не указан, компилятор вычислит его по количеству значений в списке инициализации.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz