Книга: Язык программирования Си. Издание 3-е, исправленное
5.8 Инициализация массивов указателей
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 не специфицирован, компилятор вычислит его по количеству заданных начальных значений.
- 5.1 Указатели и адреса
- 5.2 Указатели и аргументы функций
- 5.3 Указатели и массивы
- 5.4 Адресная арифметика
- 5.5 Символьные указатели функции
- 5.6 Массивы указателей, указатели на указатели
- 5.7 Многомерные массивы
- 5.8 Инициализация массивов указателей
- 5.9 Указатели против многомерных массивов
- 5.10 Аргументы командной строки
- 5.11 Указатели на функции
- 5.12 Сложные объявления
- 5.9 Указатели против многомерных массивов
- 8.1.4. Сравнение массивов
- 8.1.22. Чередование массивов
- Материнская плата имеет возможность организации RAID-массивов из двух SATA-дисков. Можно ли подключить к ней только один...
- Настройка указателей мыши
- Типы массивов в Delphi
- Очереди на основе массивов
- 11.9. Сериализация массивов и словарей в JSON
- Сортировка массивов
- Объявление динамических массивов
- Ревизия массивов
- Создание и инициализация семафоров