Использование typedef для псевдонимов типов
Часть раздела Logic & Flow путешествия по C на Coddy. Урок 58 из 63.
Иногда в программировании на C вы будете сталкиваться с ситуациями, когда существующие имена типов данных либо слишком многословны, либо нечетко выражают намерения вашей программы. Ключевое слово typedef предлагает решение, позволяя создавать новые имена для существующих типов данных.
Представьте, что typedef — это создание псевдонима или сокращенного имени для типа данных. Базовый синтаксис прост:
typedef existing_type new_name;Например, вы можете создать более описательное имя для типа данных int:
typedef int Integer;После этого объявления вы можете использовать Integer везде, где вы обычно используете int. Как int count = 5;, так и Integer count = 5; выполняют абсолютно одно и то же, но вторая версия может быть более осмысленной в определенных контекстах.
Эта возможность становится особенно ценной при работе со сложными типами данных или когда вы хотите сделать свой код более самодокументированным и простым в поддержке.
Задание
ЛегкоСоздайте программу на языке C, которая демонстрирует использование typedef для создания осмысленных псевдонимов типов для системы мониторинга температуры. Ваша программа должна:
- Создать следующие псевдонимы типов с помощью
typedef:- Создать псевдоним типа
Temperatureдляfloat - Создать псевдоним типа
SensorIDдляint - Создать псевдоним типа
Statusдляint
- Создать псевдоним типа
- В функции main:
- Объявить переменную типа
SensorIDс именемsensor - Объявить переменную типа
Temperatureс именемcurrentTemp - Объявить переменную типа
Temperatureс именемthreshold - Объявить переменную типа
Statusс именемalertStatus - Считать четыре значения из входных данных в следующем порядке: ID датчика, текущая температура, пороговая температура и статус оповещения
- Присвоить эти входные значения соответствующим переменным
- Вывести информацию о датчике в точно таком формате:
Sensor ID: [sensor_id]Current Temperature: [current_temp]Threshold: [threshold_temp]Alert Status: [alert_status]
- Выполнить анализ температуры и вывести результаты:
- Вычислить разницу температур (текущая температура минус пороговая) и сохранить ее в переменной типа
Temperatureс именемdifference - Вывести разницу в точно таком формате:
Temperature Difference: [difference] - Определить категорию температуры на основе текущей температуры:
- Если температура ниже 0.0: вывести
Category: Freezing - Если температура находится в диапазоне от 0.0 до 25.0 (включительно): вывести
Category: Normal - Если температура выше 25.0: вывести
Category: Hot
- Если температура ниже 0.0: вывести
- Проверить, должно ли быть срабатывание оповещения:
- Если текущая температура больше пороговой И статус оповещения равен 1: вывести
Alert: Temperature exceeded threshold! - В противном случае: вывести
Alert: No alert triggered
- Если текущая температура больше пороговой И статус оповещения равен 1: вывести
- Вычислить разницу температур (текущая температура минус пороговая) и сохранить ее в переменной типа
- Объявить переменную типа
Эта задача демонстрирует, как typedef делает код более самодокументированным и понятным. Вместо использования общих типов, таких как int и float, во всей программе, вы будете использовать осмысленные имена, такие как SensorID, Temperature и Status, которые четко указывают на назначение каждой переменной. Такой подход улучшает читаемость кода и облегчает его поддержку и модификацию.
Попробуйте сами
#include <stdio.h>
// TODO: Создайте здесь псевдонимы typedef
int main() {
// TODO: Объявите переменные, используя псевдонимы typedef
// Чтение входных значений
scanf("%d", &sensor);
scanf("%f", ¤tTemp);
scanf("%f", &threshold);
scanf("%d", &alertStatus);
// TODO: Напишите ниже свой код для вывода информации о датчике и выполнения анализа
return 0;
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Logic & Flow
1Основы указателей
Что такое указатель?Объявление указателейОператор взятия адреса (&)Оператор разыменования (*)Указатели NULLИтоги: Основы указателей4Проект: Простая текстовая утилита
Обзор проектаПодсчет символов7Структуры (structs)
Что такое структура?Объявление структурыСоздание переменных структурДоступ к членам структурыИнициализация структурПовторение: структура данных Student10Перечисления и typedef
enum для именованных константОбъявление и использование enumEnum в операторах switchИспользование typedef для псевдонимов типовtypedef со структурамиИтоги: практика по typedef и enum2Указатели и массивы
Имена массивов как указателиЭлементы массива — указателиАрифметика указателейСравнение указателейИтоги: Обход массива через указатели5Указатели и функции
Передача по значениюПередача указателей в функцииИзменение переменных через указателиКлассический пример: SwapПередача массивов в функцииИтоги: указатели как аргументы функций8Структуры и указатели
Указатели на структурыОператор «стрелка» (->)Передача структур по значениюПередача указателей на структурыДинамическое выделение памяти для структурИтоги: Изменение структур через указатели11Итоговые задачи на повторение
Повторение: динамическая конкатенация строкПовторение: массив структурПовторение: счетчик частоты слов3Символьные массивы и строки
Строки как массивы charНуль-терминаторВвод строк с помощью scanfИспользование strlen()Использование strcpy()Использование strcat()Использование strcmp()Итоги: основные строковые функцииПотренируйтесь самостоятельно: Онлайн-компилятор C