Сложные выражения в си

Обновлено: 21.11.2024

Выше вы можете увидеть список объявлений на языке Си. Совсем недавно я не мог сказать, что они означают. Теперь же я могу вполне уверенно объяснить их, изучив правила приоритетов для объявлений в Си.

В моём случае изучение сложных объявлений было важным шагом к использованию сложных структур данных и расширению своих возможностей. Если я не могу прочитать сложное объявление, я не смогу его использовать, а следовательно, мне придётся использовать худшие решения.

  1. Скобки, объединяющие части объявления.
  2. Постфиксные операторы: круглые скобки () , обозначающие функцию, и квадратные [] , обозначающие массив.
  3. Префиксный оператор: звёздочка * , обозначающая указатель.

Начнём с четвертого объявления из моего списка.

Правила приоритетов говорят, что квадратные скобки старше указателя, поэтому foo — это массив указателей на символ, а не указатель на массив символов.

Набор на стажировку в Dell Technologies

13 сентября – 9 октября, Санкт-Петербург и онлайн, Беcплатно

Если бы я хотел получить указатель на массив, то я должен был бы добавить круглые скобки:

В этот раз круглые скобки повысили приоритет звёздочки, и мы получили указатель на массив.

В восьмом объявлении присутствует две пары круглых скобок:

Я немного сократил количество шагов, но так, на мой взгляд, даже проще. К параметрам функций правила применяются аналогично.

И последний пример — самое сложное объявление из списка:

Стоит заметить, что последний пример является крайним случаем использования правил приоритетов, и на практике такое не приветствуется. Кроме того, обратите внимание, что в рассмотренных примерах не используются ключевые слова наподобие const и volatile , а также нет объявлений структур, перечислений и объединений.

Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

Перейти к регистрации

Читайте также: