Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Структуры (struct) в C++: объяснение с практическим примером

Что такое struct в C++?

STRUCT — это структура данных в C++, позволяющая хранить вместе элементы разных типов. В C++ структура — пользовательский тип данных. Она создаёт тип для группировки элементов различных типов под единым именем.

Например:

Предположим, нужно хранить информацию о человеке: имя, гражданство, возраст. Можно создать отдельные переменные name, citizenship, age.

Но если потребуется хранить данные о множестве людей, переменных станет много: name1, citizenship1, age1 и т.д. Чтобы избежать этого, лучше создать структуру.

В этом уроке вы узнаете:

Когда использовать структуру?

Причины использования структуры в C++:

Инициализация структуры в C++

Для создания структуры используют ключевое слово struct и идентификатор. Идентификатор становится именем структуры. Синтаксис:

struct struct_name {
    // члены структуры
}

Внутри фигурных скобок объявляются члены — они могут быть разных типов.

Пример:

struct Person {
    char name[30];
    int citizenship;
    int age;
}

Здесь Person — структура с тремя членами: name (char), citizenship и age (int). При объявлении структуры память не выделяется — она выделяется при создании переменной этого типа.

Создание экземпляров структуры

В примере выше мы создали структуру Person. Переменную структуры можно создать так:

Person p;

p — переменная типа Person. Через неё получают доступ к членам структуры.

Доступ к членам структуры

Для доступа к членам используют экземпляр структуры и оператор точка (.). Например, доступ к члену age структуры Person:

p.age = 27;

Мы обратились к члену age через экземпляр p и установили значение 27.

Пример 1: Базовое использование структуры

#include <iostream>
using namespace std;
struct Person {
    int citizenship;
    int age;
};
int main(void) {
    struct Person p;
    p.citizenship = 1;
    p.age = 27;
    cout << "Person citizenship: " << p.citizenship << endl;
    cout << "Person age: " << p.age << endl;
    return 0;
}

Вывод:

Структуры (struct) в C++: объяснение с практическим примером

Скриншот кода:

Структуры (struct) в C++: объяснение с практическим примером

Разбор кода:

  1. Подключаем iostream.
  2. Используем пространство имён std.
  3. Создаём структуру Person.
  4. Начало тела структуры.
  5. Член citizenship типа int.
  6. Член age типа int.
  7. Конец тела структуры.
  8. Вызов main().
  9. Создание экземпляра Person с именем p.
  10. Установка citizenship = 1.
  11. Установка age = 27.
  12. Вывод citizenship.
  13. Вывод age.
  14. Возврат 0 при успехе.
  15. Конец main().

Указатели на структуру

Можно создать указатель, указывающий на структуру. Это аналогично указателям на встроенные типы (int, float, double и т.д.). Указатель хранит адрес в памяти.

Пример 2: Указатель на структуру

#include <iostream>
using namespace std;
struct Length {
    int meters;
    float centimeters;
};
int main() {
    Length *ptr, l;
    ptr = &l;
    cout << "Enter meters: ";
    cin >> (*ptr).meters;
    cout << "Enter centimeters: ";
    cin >> (*ptr).centimeters;
    cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters";
    return 0;
}

Вывод:

Структуры (struct) в C++: объяснение с практическим примером

Скриншот кода:

Структуры (struct) в C++: объяснение с практическим примером

Разбор кода:

  1. Подключаем iostream.
  2. Используем std.
  3. Создаём структуру Length.
  4. Начало тела структуры.
  5. Член meters типа int.
  6. Член centimeters типа float.
  7. Конец тела структуры.
  8. Вызов main().
  9. Создание указателя *ptr и обычной переменной l типа Length.
  10. Сохранение адреса l в указателе.
  11. Вывод приглашения ввести метры.
  12. Чтение значения через указатель (член meters).
  13. Вывод приглашения ввести сантиметры.
  14. Чтение значения через указатель (член centimeters).
  15. Вывод прочитанных значений.
  16. Возврат 0 при успехе.
  17. Конец main().

Структура как аргумент функции

Структуру можно передать функции в качестве аргумента. Это делается так же, как передача обычного аргумента. Переменные структуры также можно передавать. Хороший пример — вывод значений членов структуры.

Пример 3: Передача структуры в функцию

#include <iostream>
using namespace std;
struct Person {
    int citizenship;
    int age;
};
void func(struct Person p);
int main() {
    struct Person p;
    p.citizenship = 1;
    p.age = 27;
    func(p);
    return 0;
}
void func(struct Person p) {
    cout << " Person citizenship: " << p.citizenship << endl;
    cout << " Person age: " << p.age;
}

Вывод:

Структуры (struct) в C++: объяснение с практическим примером

Скриншот кода:

Структуры (struct) в C++: объяснение с практическим примером

Разбор кода:

  1. Подключаем iostream.
  2. Используем std.
  3. Создаём структуру Person.
  4. Начало тела структуры.
  5. Член citizenship типа int.
  6. Член age типа int.
  7. Конец тела структуры.
  8. Объявление функции, принимающей экземпляр Person.
  9. Вызов main().
  10. Создание экземпляра Person с именем p.
  11. Установка citizenship = 1 через p.
  12. Установка age = 27 через p.
  13. Вызов функции с передачей p.
  14. Возврат 0.
  15. Конец main().
  16. Тело функции.
  17. Начало тела функции.
  18. Вывод citizenship.
  19. Вывод age.
  20. Конец функции.

Ограничения структуры C++

Следующие ограничения существуют для структур:

Резюме:

Язык C

  1. Освоение структур и указателей в C: практическое руководство
  2. Цикл do-while в C++: синтаксис, примеры и вложенные циклы
  3. Оператор switch-case в C++: синтаксис, применение и практические примеры
  4. Динамическое выделение массивов в C++: практическое руководство с примерами кода
  5. Указатели в C++: концепции, примеры и практические применения
  6. Тип данных char в C++: объявление, ASCII и методы преобразования
  7. Перегрузка операторов в C++: практическое руководство с примерами кода
  8. Освоение std::list в C++: синтаксис, функции и практические примеры
  9. Функции в C++: подробное объяснение с практическими примерами кода
  10. C++ Struct vs Class: ключевые отличия, синтаксис и лучшие сценарии использования