Как строятся типы в Си
2025-05-15 23:54![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Простой ли язык Си? Я покажу вам как в нём строятся типы, и вы сами решите. (Подсказка: непростой.)
Я задумал некий сложный тип. Будем строить его по шагам. Что он по большому счёту представляет? Указатель. Ставим звёздочку.
Что находится в каждом элементе массива? Указатель. Добавляем звёздочку слева.
А чтобы совсем весело стало, добавим внутрь слово static.
Я задумал некий сложный тип. Будем строить его по шагам. Что он по большому счёту представляет? Указатель. Ставим звёздочку.
На что указывает наш указатель? На массив. Ставим круглые скобки вокруг звёздочки и дописываем квадратные скобки справа.*
Сколько элементов в массиве? Пять. Ставим пятёрку внутри квадратных скобок.(*)[]
(*)[5]
Что находится в каждом элементе массива? Указатель. Добавляем звёздочку слева.
На что указывает этот указатель? На функцию. Какие аргументы принимает функция? Один аргумент типа char. Заворачиваем нашу конструкцию в круглые скобки и справа в круглых скобках добавляем аргументы.*(*)[5]
Что возвращает функция? Тип int. Дописываем слева.(*(*)[5])(char)
Таким образом, мы имеем указатель на массив из пяти указателей на функции, принимающие char и возвращающие int. Не пытайтесь повторить на трезвую голову. 😀int (*(*)[5])(char)
А чтобы совсем весело стало, добавим внутрь слово static.
Получили указатель на массив из не менее чем пяти указателей на функции, принимающие char и возвращающие int.int (*(*)[static 5])(char)