Объявление структуры
Часть раздела Логика и управление потоком путешествия по C на Coddy. Урок 39 из 63.
Теперь, когда ты понимаешь, что такое struct, пора научиться создавать собственные типы структур. Объявление struct в C следует определённому синтаксису, который задаёт шаблон для пользовательского типа данных.
Базовый синтаксис объявления struct:
struct StructureName {
datatype member1;
datatype member2;
// ... другие члены
};Вот как работает каждая часть: начни с ключевого слова struct, за ним укажи имя структуры, затем перечисли все переменные-члены внутри фигурных скобок. Каждый член объявляется так же, как обычная переменная: указываются его тип данных и имя. Не забудь поставить точку с запятой после закрывающей скобки!
Например, чтобы создать структуру, представляющую точку в двумерном пространстве:
struct Point {
int x;
int y;
};Это объявление создаёт новый тип данных с именем struct Point, который содержит два целочисленных поля: x и y. После объявления этот тип структуры можно использовать во всей программе для создания переменных, которые упорядоченно хранят информацию о координатах.
Задание
ЛегкоСоздай программу на C, которая определяет struct для представления книги в библиотечной системе. Программа должна:
- Определить
structс именемBook, содержащую следующие поля:- Целое число
idдля хранения идентификационного номера книги - Массив символов
titleразмером 50 для хранения названия книги - Целое число
pagesдля хранения количества страниц - Число с плавающей точкой
priceдля хранения цены книги
- Целое число
- После определения структуры выведи сообщение с подтверждением:
Book struct defined successfully! - Выведи размер структуры
Bookв байтах, используяsizeof(struct Book)в формате:Size of Book struct: [size] bytes - Выведи размер каждого поля отдельно, передав его тип в
sizeof(). Например, используйsizeof(int)дляid,sizeof(char[50])дляtitleиsizeof(float)дляprice:Size of id: [size] bytesSize of title: [size] bytesSize of pages: [size] bytesSize of price: [size] bytes
В сумме поля занимают 62 байта, но sizeof(struct Book) возвращает 64: компилятор добавляет 2 байта заполнения после title, чтобы pages начиналось с адреса, кратного 4.
Это задание проверяет понимание синтаксиса объявления структуры, в том числе правильное использование ключевого слова struct, объявление полей с подходящими типами данных и точку с запятой после закрывающей фигурной скобки. Ты также узнаешь, как C выделяет память для полей структуры с помощью оператора sizeof().
Помни, что точные значения размеров могут различаться в зависимости от архитектуры твоей системы, но синтаксис определения структуры должен быть правильным, чтобы программа успешно компилировалась и запускалась.
Попробуйте сами
#include <stdio.h>
int main() {
// TODO: Определите здесь свою структуру Book
// Выведите сообщение с подтверждением
printf("Book struct defined successfully!\n");
// TODO: Выведите размер структуры Book и её полей
return 0;
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Основы указателей
Что такое указатель?Объявление указателейОператор взятия адреса (&)Оператор разыменования (*)Указатели NULLИтоги: Основы указателей4Проект: Простая текстовая утилита
Обзор проектаПодсчет символов7Структуры (structs)
Что такое структура?Объявление структурыСоздание переменных структурДоступ к членам структурыИнициализация структурПовторение: структура данных Student2Указатели и массивы
Имена массивов как указателиЭлементы массива — указателиАрифметика указателейСравнение указателейИтоги: Обход массива через указатели5Указатели и функции
Передача по значениюПередача указателей в функцииИзменение переменных через указателиКлассический пример: SwapПередача массивов в функцииИтоги: указатели как аргументы функций8Структуры и указатели
Указатели на структурыОператор «стрелка» (->)Передача структур по значениюПередача указателей на структурыДинамическое выделение памяти для структурИтоги: Изменение структур через указатели11Итоговые задачи на повторение
Повторение: динамическая конкатенация строкПовторение: массив структурПовторение: счетчик частоты слов3Символьные массивы и строки
Строки как массивы charНуль-терминаторВвод строк с помощью scanfИспользование strlen()Использование strcpy()Использование strcat()Использование strcmp()Итоги: основные строковые функцииПотренируйтесь самостоятельно: Онлайн-компилятор C