Добро пожаловать на очередной урок по программированию на языке C++. Сегодня мы рассмотрим одну из ключевых тем, которая позволяет более эффективно управлять данными в программе — структуры. Структуры предоставляют возможность объединения различных типов данных в одном логическом блоке, что делает код более читаемым и упрощает его сопровождение.
Что такое структура?
Структура (struct) в C++ — это пользовательский тип данных, который позволяет объединять переменные разных типов под одним именем. Это особенно полезно, когда нужно сгруппировать различные характеристики одного объекта. Например, для представления данных о студенте можно использовать структуру.
Объявление структуры
Для объявления структуры используется ключевое слово struct
, за которым следует имя структуры и блок с определениями переменных. Пример:
struct Student {
std::string name;
int age;
float gpa;
};
В данном примере структура Student
содержит три переменные: name
(имя студента), age
(возраст) и gpa
(средний балл).
Создание экземпляра структуры
После объявления структуры можно создавать её экземпляры и работать с ними так же, как и с обычными переменными. Пример создания и инициализации экземпляра структуры:
Student student1;
student1.name = "Alex";
student1.age = 20;
student1.gpa = 3.5;
Также можно инициализировать структуру при создании:
Student student2 = {"Maria", 22, 3.8};
Доступ к членам структуры
Для доступа к членам структуры используется оператор точки (.
). Пример:
std::cout << "Name: " << student1.name << std::endl;
std::cout << "Age: " << student1.age << std::endl;
std::cout << "GPA: " << student1.gpa << std::endl;
Результат выполнения кода:
Name: Alex
Age: 20
GPA: 3.5
Использование структур в функциях
Структуры можно передавать в функции в качестве аргументов как по значению, так и по ссылке. Пример функции, которая принимает структуру по значению:
void printStudentInfo(Student s) {
std::cout << "Name: " << s.name << std::endl;
std::cout << "Age: " << s.age << std::endl;
std::cout << "GPA: " << s.gpa << std::endl;
}
И вызов этой функции:
printStudentInfo(student1);
Если нужно изменить данные внутри структуры, лучше передавать её по ссылке:
void updateGPA(Student &s, float newGPA) {
s.gpa = newGPA;
}
Вызов функции для обновления GPA:
updateGPA(student1, 4.0);
Вложенные структуры
В C++ структуры могут содержать другие структуры в качестве членов. Пример:
struct Address {
std::string city;
std::string street;
int houseNumber;
};
struct Person {
std::string name;
Address address;
int age;
};
Создание и инициализация экземпляра структуры с вложенной структурой:
Person person1;
person1.name = "John";
person1.address.city = "New York";
person1.address.street = "5th Avenue";
person1.address.houseNumber = 101;
person1.age = 30;
Структуры и классы
В C++ структуры и классы имеют много общего, однако по умолчанию члены структуры публичные, тогда как у классов — приватные. Это делает структуры удобными для простых объединений данных, тогда как классы чаще используются для более сложных объектов с методами и инкапсуляцией.
Задание для самостоятельной работы
Напишите программу, которая реализует структуру Book
с полями title
(название книги), author
(автор книги) и year
(год издания). Программа должна запрашивать у пользователя данные о трех книгах и выводить их на экран в следующем формате:
Название книги: [Название]
Автор: [Автор]
Год издания: [Год]
Пример работы программы:
Введите название первой книги: Преступление и наказание
Введите автора первой книги: Федор Достоевский
Введите год издания первой книги: 1866
Введите название второй книги: Война и мир
Введите автора второй книги: Лев Толстой
Введите год издания второй книги: 1869
Введите название третьей книги: Мастер и Маргарита
Введите автора третьей книги: Михаил Булгаков
Введите год издания третьей книги: 1967
Название книги: Преступление и наказание
Автор: Федор Достоевский
Год издания: 1866
Название книги: Война и мир
Автор: Лев Толстой
Год издания: 1869
Название книги: Мастер и Маргарита
Автор: Михаил Булгаков
Год издания: 1967
Заключение
Структуры в C++ являются мощным инструментом для организации данных. Они позволяют объединять разные типы данных в одном логическом блоке, что делает код более структурированным и читаемым. Научившись эффективно использовать структуры, вы сможете писать более понятный и поддерживаемый код.