C++ Структура с примером
Что такое структура в C++?
A СТРУКТУРА - это C++ структура данных, которую можно использовать для хранения вместе элементов разных типов данных. В C++, структура — это определяемый пользователем тип данных. Структура создает тип данных для группировки элементов разных типов данных в рамках одного типа данных.
Например:
Предположим, вам нужно сохранить информацию о ком-то, его имени, гражданстве и возрасте. Вы можете создать такие переменные, как имя, гражданство и возраст, чтобы хранить данные отдельно.
Однако в будущем вам может понадобиться хранить информацию о многих людях. Это означает, что будут созданы переменные для разных людей. Например, имя1, гражданство1, возраст1 и т. д. Чтобы этого избежать, лучше создать структуру.
Когда использовать структуру?
Вот несколько причин использовать структуру в C++.
- Используйте структуру, когда вам нужно хранить элементы разных типов данных в одном типе данных.
- C++ Структуры являются типом значения, а не ссылочным типом. Используйте структуру, если вы не собираетесь изменять данные после создания.
C++ Инициализация структуры
Чтобы создать C++ структуру, мы используем ключевое слово struct, за которым следует идентификатор. Идентификатор становится именем структуры. Вот синтаксис для создания C++ структура:
Синтаксис:
struct struct_name { // struct members }
В приведенном выше синтаксисе мы использовали ключевое слово struct. struct_name — это имя структуры.
Члены структуры добавляются в фигурные скобки. Эти члены, вероятно, принадлежат к разным типам данных.
Например:
struct Person { char name[30]; int citizenship; int age; }
В приведенном выше примере Person представляет собой структуру с тремя членами. Члены включают имя, гражданство и возраст. Один член имеет тип данных char, а остальные 2 являются целыми числами. При создании структуры память не выделяется. Память выделяется только после добавления переменной в структуру.
Создание экземпляров структур
В приведенном выше примере мы создали структуру с именем Person. Мы можем создать структурную переменную следующим образом:
Person p;
p — это структурная переменная типа Person. Мы можем использовать эту переменную для доступа к членам структуры.
Доступ к членам структуры
Для доступа к членам структуры мы используем экземпляр структуры и оператор точки (.). Например, чтобы получить доступ к возрасту члена структуры Person:
p.age = 27;
Мы получили доступ к возрасту члена структуры Person, используя экземпляр структуры, стр. Затем мы установили возраст участника равным 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; }
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включите заголовочный файл iostream в нашу программу, чтобы использовать определенные в нем функции.
- Включите пространство имен std, чтобы использовать его классы без его вызова.
- Создайте структуру с именем Person.
- Начало тела структуры.
- Создайте член структуры с именем гражданство целого типа.
- Создайте член структуры с именем age целого типа.
- Конец тела структуры.
- Вызовите функцию main(). Логику программы следует добавить в тело этой функции.
- Создайте экземпляр структуры Person и присвойте ему имя p.
- Установите значение гражданства члена структуры на 1.
- Установите значение возраста члена структуры равное 27.
- Выведите значение гражданства члена структуры на консоль вместе с другим текстом.
- Выведите значение возраста члена структуры на консоль вместе с другим текстом.
- Программа должна вернуть значение, если она работает успешно.
- Конец функции main().
Указатели на структуру
Можно создать указатель, указывающий на структуру. Это похоже на то, как создаются указатели, указывающие на собственные типы данных, такие как int, float, double и т. д. Обратите внимание, что указатель в C++ сохранит ячейку памяти.
Пример 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; }
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включите заголовочный файл iostream в нашу программу, чтобы использовать его функции.
- Включите пространство имен std в нашу программу, чтобы использовать его классы, не вызывая его.
- Создайте структуру с именем Длина.
- Начало тела структуры Длина.
- Создайте член структуры с именемmeters целочисленного типа данных.
- Создайте член структуры с именем «сантиметры» целочисленного типа.
- Конец тела структуры Длина.
- Вызовите функцию main().
- Начало тела функции main().
- Создайте переменную-указатель *ptr и обычную переменную l типа Длина.
- Сохраним адрес переменной l в нашем указатель переменной.
- Отображение сообщения на консоли с просьбой ввести значение переменных счетчиков.
- Прочитайте значение, введенное пользователем с клавиатуры. Доступ к счетчикам функций-членов здесь осуществляется с помощью переменной-указателя.
- Отобразите на консоли сообщение с просьбой ввести значение переменных сантиметров.
- Прочитайте значение, введенное пользователем с клавиатуры. Доступ к функции-члену «сантиметры» здесь осуществляется с помощью переменной-указателя.
- Отобразите значения, прочитанные пользователем, на консоли вместе с другим текстом.
- Программа должна вернуть значение после успешного выполнения.
- Конец тела функции 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; }
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включите заголовочный файл iostream в наш файл. Затем мы будем использовать его функции, не получая ошибок.
- Включите пространство имен std в нашу программу, чтобы использовать его классы. Нам не нужно будет вызывать пространство имен, чтобы использовать его классы.
- Создайте структуру с именем Person.
- Начало тела структуры Person.
- Создайте член структуры Person. Член называется гражданством и имеет целочисленный тип.
- Создайте член структуры Person. Член называется age и имеет целочисленный тип.
- Конец тела структуры Person.
- Создайте функцию, которая принимает в качестве аргумента экземпляр структуры Person, p.
- Вызов основной функции. { отмечает начало тела функции main().
- Создайте экземпляр структуры Person и присвойте ему имя p.
- Получите доступ к переменной гражданства члена структуры, используя экземпляр структуры p и присвоив ему значение 1.
- Получите доступ к переменной-члену структуры age, используя экземпляр структуры p и присвоив ему значение 27.
- Вызовите функцию и передайте ей экземпляр структуры Person, p, в качестве аргумента.
- Функция должна вернуть значение после успешного выполнения.
- Конец тела функции main().
- Создайте тело функции.
- Начало тела функции.
- Получите доступ к значению гражданства члена структуры и распечатайте его на консоли вместе с другим текстом.
- Получите доступ к значению возраста члена структуры и распечатайте его на консоли вместе с другим текстом.
- Конец тела функции.
Ограничение C++ Структура
Ниже приведены ограничения структур:
- Тип данных struct нельзя рассматривать как встроенные типы данных.
- Operaторцы типа +- и другие не могут быть использованы на структурные переменные.
- Структуры не поддерживают сокрытие данных. Доступ к членам структуры может осуществляться любой функцией независимо от ее области действия.
- Статические члены не могут быть объявлены внутри тела структуры.
- Конструкторы не могут быть созданы внутри структуры.
Резюме
- Структура — это структура данных, в которой хранятся элементы данных, принадлежащие разным типам.
- В то время как массив хранит элементы данных одного типа, структура хранит элементы данных разных типов.
- Структуру следует использовать, когда не ожидается, что элементы данных изменят значение.
- Доступ к членам структуры осуществляется с помощью оператора точки (.).
- Нам нужно создать экземпляр структуры.
- Чтобы создать C++ struct, мы используем ключевое слово struct.
- Указатели, указывающие на структуру, создаются аналогично тому, как создаются указатели, указывающие на обычные типы.
- Структура может быть передана в качестве аргумента функции точно так же, как передаются обычные функции.