Структура 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;
}

Вывод:

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

Вот скриншот кода:

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

Пояснение к коду:

  1. Включите заголовочный файл iostream в нашу программу, чтобы использовать определенные в нем функции.
  2. Включите пространство имен std, чтобы использовать его классы без его вызова.
  3. Создайте структуру с именем Person.
  4. Начало тела структуры.
  5. Создайте член структуры с именем гражданство целого типа.
  6. Создайте член структуры с именем age целого типа.
  7. Конец тела структуры.
  8. Вызовите функцию main(). Логику программы следует добавить в тело этой функции.
  9. Создайте экземпляр структуры Person и присвойте ему имя p.
  10. Установите значение гражданства члена структуры на 1.
  11. Установите значение возраста члена структуры равное 27.
  12. Выведите значение гражданства члена структуры на консоль вместе с другим текстом.
  13. Выведите значение возраста члена структуры на консоль вместе с другим текстом.
  14. Программа должна вернуть значение, если она работает успешно.
  15. Конец функции 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;
}

Вывод:

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

Вот скриншот кода:

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

Пояснение к коду:

  1. Включите заголовочный файл iostream в нашу программу, чтобы использовать его функции.
  2. Включите пространство имен std в нашу программу, чтобы использовать его классы, не вызывая его.
  3. Создайте структуру с именем Длина.
  4. Начало тела структуры Длина.
  5. Создайте член структуры с именемmeters целочисленного типа данных.
  6. Создайте член структуры с именем «сантиметры» целочисленного типа.
  7. Конец тела структуры Длина.
  8. Вызовите функцию main().
  9. Начало тела функции main().
  10. Создайте переменную-указатель *ptr и обычную переменную l типа Длина.
  11. Сохраним адрес переменной l в нашем указатель переменной.
  12. Отображение сообщения на консоли с просьбой ввести значение переменных счетчиков.
  13. Прочитайте значение, введенное пользователем с клавиатуры. Доступ к счетчикам функций-членов здесь осуществляется с помощью переменной-указателя.
  14. Отобразите на консоли сообщение с просьбой ввести значение переменных сантиметров.
  15. Прочитайте значение, введенное пользователем с клавиатуры. Доступ к функции-члену «сантиметры» здесь осуществляется с помощью переменной-указателя.
  16. Отобразите значения, прочитанные пользователем, на консоли вместе с другим текстом.
  17. Программа должна вернуть значение после успешного выполнения.
  18. Конец тела функции 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;
}

Вывод:

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

Вот скриншот кода:

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

Пояснение к коду:

  1. Включите заголовочный файл iostream в наш файл. Затем мы будем использовать его функции, не получая ошибок.
  2. Включите пространство имен std в нашу программу, чтобы использовать его классы. Нам не нужно будет вызывать пространство имен, чтобы использовать его классы.
  3. Создайте структуру с именем Person.
  4. Начало тела структуры Person.
  5. Создайте член структуры Person. Член называется гражданством и имеет целочисленный тип.
  6. Создайте член структуры Person. Член называется age и имеет целочисленный тип.
  7. Конец тела структуры Person.
  8. Создайте функцию, которая принимает в качестве аргумента экземпляр структуры Person, p.
  9. Вызов основной функции. { отмечает начало тела функции main().
  10. Создайте экземпляр структуры Person и присвойте ему имя p.
  11. Получите доступ к переменной гражданства члена структуры, используя экземпляр структуры p и присвоив ему значение 1.
  12. Получите доступ к переменной-члену структуры age, используя экземпляр структуры p и присвоив ему значение 27.
  13. Вызовите функцию и передайте ей экземпляр структуры Person, p, в качестве аргумента.
  14. Функция должна вернуть значение после успешного выполнения.
  15. Конец тела функции main().
  16. Создайте тело функции.
  17. Начало тела функции.
  18. Получите доступ к значению гражданства члена структуры и распечатайте его на консоли вместе с другим текстом.
  19. Получите доступ к значению возраста члена структуры и распечатайте его на консоли вместе с другим текстом.
  20. Конец тела функции.

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

Фоллоwing ограничения структур:

  • Тип данных struct нельзя рассматривать как встроенные типы данных.
  • Такие операторы, как +- и другие, нельзя использовать в структурные переменные.
  • Структуры не поддерживают сокрытие данных. Доступ к членам структуры может осуществляться любой функцией независимо от ее области действия.
  • Статические члены не могут быть объявлены внутри тела структуры.
  • Конструкторы не могут быть созданы внутри структуры.

Итоги

  • Структура — это структура данных, в которой хранятся элементы данных, принадлежащие разным типам.
  • В то время как массив хранит элементы данных одного типа, структура хранит элементы данных разных типов.
  • Структуру следует использовать, когда не ожидается, что элементы данных изменят значение.
  • Доступ к членам структуры осуществляется с помощью оператора точки (.).
  • Нам нужно создать экземпляр структуры.
  • Чтобы создать структуру C++, мы используем ключевое слово struct.
  • Указатели, указывающие на структуру, создаются аналогично тому, как создаются указатели, указывающие на обычные типы.
  • Структура может быть передана в качестве аргумента функции точно так же, как передаются обычные функции.