netlib.narod.ru | < Назад | Оглавление | Далее > |
Напишем функцию 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 | < Назад | Оглавление | Далее > |