Объявления объектов со сложными описателями

Как известно, все объекты (переменные) программы должны быть определены или объявлены согласно общему формату:

[класс памяти] тип описатель [=инициатор],…;

где необязательные части формата заключены в [ ],

тип переменной задается ключевым словом типа;

описатель – это простой идентификатор или его комбинация с модификатором: * – указатель, [ ] – массив, () – функция. Модификатор указателя (*) всегда задается перед идентификатором, а модификаторы массива и функции ([ ], ()) – после идентификатора;

инициатор – задает начальное значение объекта.

Кроме того, можно использовать сочетания модификаторов, что дает возможность создавать множество сложных описателей типов объектов, которые необходимо правильно интерпретировать. При использовании различных комбинаций модификаторов надо помнить, что некоторые комбинации недопустимы, а именно:

- элементами массива не могут быть функции, но могут быть указатели на функции;

- функции не могут возвращать массив или функцию, но могут возвращать указатели на них.

При интерпретации сложных описателей скобки [ ], () имеют приоритет над *. Сами скобки [ ] или () имеют одинаковый приоритет и связываются слева направо. Спецификатор типа рассматривается на последнем шаге. Можно использовать круглые скобки (), чтобы изменить порядок интерпретации на необходимый. Для интерпретации сложных описателей можно использовать правило “изнутри наружу” из четырех шагов:

1. Начать с идентификатора и посмотреть вправо (®), есть ли скобки [ ] или ().

2. Если скобки имеются, то интерпретировать эту часть описателя, а затем посмотреть влево () в поиске *.

3. Если на любой стадии справа встретиться закрывающая круглая скобка ‘)’, то вначале необходимо применить все эти правила внутри скобок (), а затем продолжить интерпретацию.

4. Интерпретировать спецификатор типа объекта.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: