Урок №25 Переменные, значения которых нельзя изменять
План видео-урока: «Константы в Си: Как защитить данные от изменений» 1. Введение: Что такое константа? Определение: Константа (или С-литерал) — это значение, которое остается фиксированным на протяжении всего выполнения программы. Зачем они нужны? Удобочитаемость: Имя константы несет смысл (например, PI вместо 3.141593). Безопасность: Защита от случайного изменения данных — компилятор выдаст ошибку при попытке записи в константу. Борьба с «магическими числами»: Избавление кода от чисел с непонятным назначением. 2. Вид №1: Переменные-константы (const) Синтаксис: Объявляется как обычная переменная, но с ключевым словом const. Пример: const float PI = 3.141593;. Правила: Константа обязательно должна быть инициализирована в момент объявления. Традиционно имена пишутся в ВЕРХНЕМ РЕГИСТРЕ, чтобы визуально отличать их от переменных. 3. Вид №2: Перечисления (enum) Суть: Позволяет создать именованную последовательность целых числовых констант. Логика работы: По умолчанию первая константа равна 0, каждая следующая больше на 1. Пример: enum {RED, YELLOW, GREEN}; (где RED=0, YELLOW=1...). Можно назначать свои значения: enum {RED = 1, YELLOW, GREEN}; (теперь YELLOW=2). Пользовательские типы: С помощью typedef перечисление можно превратить в полноценный тип данных. 4. Вид №3: Макросы препроцессора (#define) Механика: Это инструкция препроцессору заменить имя макроса на указанную строку текста до начала компиляции. Синтаксис: #define ИМЯ_КОНСТАНТЫ значение (без точки с запятой в конце). Применение: Используется для создания «манифестных констант» (например, размер таблицы) или управления отладкой. 5. Что нового в стандарте C23? Современный стандарт значительно расширяет и ужесточает работу с константами: * Ключевое слово constexpr: Введен спецификатор хранения для объектов, чьи значения фиксируются на этапе трансляции (компиляции). В отличие от const, объекты constexpr гарантированно вычисляются при сборке, что позволяет использовать их, например, для задания размеров массивов. Требует точного представления значения в целевом типе без неявных потерь точности. * Улучшенные enum: В C23 появилась возможность указывать фиксированный базовый тип для перечисления (например, enum E : short { ... };). Это повышает портативность кода и позволяет компилятору заранее знать размер перечисления. * Предопределенные константы: Ключевые слова true, false и nullptr теперь являются официальными константами языка. * Двоичные константы: Теперь числа можно записывать в двоичном виде напрямую (префикс 0b или 0B). 6. Сравнение: Что и когда использовать? #define: Для простых глобальных значений или условий компиляции. const: Для данных, которые не должны меняться в ходе работы функции. constexpr (C23): Для именованных констант, которые должны быть известны компилятору на этапе сборки. enum: Для логически связанных наборов целых чисел. 7. Заключение и практика Совет: Всегда используйте константы вместо «голых» чисел в коде. Это сделает ваш код профессиональным и надежным. ----------------------------------------------------------------------------- Домашнее задание: Напишите программу, которая использует constexpr (в стандарте C23) для задания размера массива, заполните этот массив значениями из enum и выведите их в консоль. ----------------------------------------------------------------------------- Важно: Для корректной работы функций с константами больших типов (например, long double) в Windows, используйте спецификаторы %Le и макрос #define _USE_MINGW_ANSI_STDIO 1 ----------------------------------------------------------------------------- В учебнике я описываю подробно примеры кода работы с константами https://6767864766974.blacksea.in.ua/l/ml --- #программированиенаСиснуля #лучшийкурспоСи #какработаетпамятьвСи #программирование #языкСи #СиСНуля #программированиеДляНачинающих #урокиСи #обучениеIT #разработкаПО #языкПрограммированияСи #визуальноеОбучение
Название:
Урок №25 Переменные, значения которых нельзя изменять
Категория:
Разное