C++ Структура с примером

⚡ Умное резюме

Структура в C++ Это определяемый пользователем тип данных, который группирует элементы разных типов данных под одним именем, позволяя одной переменной хранить связанные значения, такие как имя человека, гражданство и возраст.

  • 📦 Различные типы данных: Структура объединяет переменные разных типов под одним заданным пользователем именем.
  • 🔑 ключевое слово структуры: Определите структуру с помощью ключевого слова struct, затем перечислите ее элементы в фигурных скобках.
  • 🧱 Создание экземпляров: При записи значения переменной типа Person p создается переменная структуры и выделяется память для нее.
  • 🎯 Точечный оператор: Прочитать или установить любой элемент через экземпляр, например, p.age = 27.
  • ➡️ Указатели и функции: Структура работает с указателями и передает их функции как обычный аргумент.
  • 🤖 Помощь ИИ: GitHub Copilot и другие ИИ-помощники формируют определения структур и обеспечивают доступ к элементам из комментариев.

C++ Структура

Что такое структура в C++?

Структура — это C++ структура данных, которую можно использовать для хранения вместе элементов разных типов данных. В C++Структура — это определяемый пользователем тип данных. Структура создает тип данных для группы.ping Элементы разных типов данных объединены в рамках одного типа данных.

Например:

Предположим, вам нужно сохранить информацию о ком-то, его имени, гражданстве и возрасте. Вы можете создать такие переменные, как имя, гражданство и возраст, чтобы хранить данные отдельно.

Однако в будущем вам может потребоваться хранить информацию о многих людях. Это означает, что будут созданы переменные для разных людей. Например, имя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;
}

Выход:

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

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

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

Code Объяснение:

  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;
}

Выход:

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

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

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

Code Объяснение:

  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;
}

Выход:

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

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

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

Code Объяснение:

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

Ниже приведены ограничения структур:

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

Часто задаваемые вопросы (FAQ)

In C++ Структура и класс практически идентичны. Единственное существенное различие заключается в доступе по умолчанию: члены структуры по умолчанию являются публичными, а члены класса — приватными. Оба поддерживают функции-члены, конструкторы и наследование.

Структура AC содержит только данные, и перед объявлением каждой переменной необходимо писать `struct`. C++ Структура также может включать в себя функции-члены, конструкторы и спецификаторы доступа, а ключевое слово `struct` является необязательным при объявлении переменных.

Объявите структуру, затем определите массив таких структур, например, Person people[3]. Каждый элемент представляет собой полноценную структуру, и доступ к членам осуществляется с помощью people[0].age. Массивы структур хранят множество записей одного типа вместе.

Вложенная структура — это структура, объявленная как член другой структуры. Она группирует связанные подструктуры данных, например, структура типа Date, помещенная внутрь структуры типа Employee. Доступ к внутренним членам осуществляется с помощью цепочки операторов точки.

Размер приблизительно равен сумме его элементов плюс заполнение, добавляемое компилятором для выравнивания, поэтому sizeof может превышать общую сумму. Функции-члены ничего не добавляют. Упорядочивание элементов по размеру уменьшает ненужное заполнение.

Используйте стрелочный оператор, когда у вас есть указатель на структуру. Вместо (*ptr).age, сокращенная команда ptr->age считывает тот же член. Точечный оператор работает с непосредственным экземпляром, а не с указателем.

Да. Искусственный интеллект, помогающий программистам, превращает короткий запрос или комментарий в полноценный код. C++ Структура, включая члены, конструкторы и доступ к полям. Всегда проверяйте сгенерированные типы данных и их соответствие, поскольку ИИ может упустить из виду требования, специфичные для проекта.

Да. Второй пилот GitHub В редакторе предлагаются определения структур, переменные-члены и доступ с помощью точек или стрелок по мере ввода текста. Программа хорошо справляется с повторяющимся шаблонным кодом, хотя перед компиляцией всё равно следует проверять типы, заполнение и логику.

Подведем итог этой публикации следующим образом: