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

⚡ Умно обобщение

Структура в C++ е потребителски дефиниран тип данни, който групира елементи от различни типове данни под едно име, позволявайки на една променлива да съхранява свързани стойности, като например име на човек, гражданство и възраст, заедно.

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

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

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

СТРУКТУРА е C++ структура от данни, която може да се използва за съхраняване заедно на елементи от различни типове данни. в C++, структурата е потребителски дефиниран тип данни. Структурата създава тип данни за групаping елементи от различни типове данни под един тип данни.

Например:

Да предположим, че трябва да съхраните информация за някого, неговото име, гражданство и възраст. Можете да създадете променливи като име, гражданство и възраст, за да съхранявате данните отделно.

Въпреки това, в бъдеще може да се наложи да съхранявате информация за много хора. Това означава, че ще бъдат създадени променливи за различни лица. Например, име1, гражданство1, възраст1 и т.н. За да избегнете това, е по-добре да създадете структура.

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

Ето някои причини за използването на структура в C++.

  • Използвайте структура, когато трябва да съхранявате елементи от различни типове данни под един тип данни.
  • C++ структурите са стойностен тип, а не референтен тип. Използвайте структура, ако не възнамерявате да променяте данните си след създаването.

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

За да създадете C++ структура, използваме ключовата дума struct, последвана от идентификатор. Идентификаторът става името на структурата. Ето синтаксиса за създаване на a 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. Можем да използваме тази променлива за достъп до членовете на структурата.

Достъп до членовете на структурата

За достъп до членовете на структурата използваме екземпляра на структурата и оператора точка (.). Например, за достъп до възрастта на член на struct Person:

p.age = 27;

Имаме достъп до възрастта на член на struct Person, използвайки екземпляра на struct, 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;
}

Изход:

Достъп до членовете на структурата

Ето екранна снимка на кода:

Достъп до членовете на структурата

Code Обяснение:

  1. Включете заглавния файл на iostream в нашата програма, за да използвате дефинираните в него функции.
  2. Включете пространството от имена std, за да използвате неговите класове, без да го извиквате.
  3. Създайте структура с име Person.
  4. Началото на структурното тяло.
  5. Създайте член на структура с име гражданство от тип цяло число.
  6. Създайте член на структура с име възраст от тип цяло число.
  7. Край на тялото на структурата.
  8. Извикайте функцията main(). Логиката на програмата трябва да се добави в тялото на тази функция.
  9. Създайте екземпляр на структурата Person и му дайте името p.
  10. Задайте стойността на гражданството на члена на структурата на 1.
  11. Задайте стойността на struct member age на 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. Създайте структура с име Length.
  4. Начало на тялото на структурата Дължина.
  5. Създайте член на структура с име meters от целочислен тип данни.
  6. Създайте член на структура с име сантиметри от тип цяло число.
  7. Край на тялото на конструкцията Дължина.
  8. Извикайте функцията main().
  9. Начало на тялото на функцията main().
  10. Създайте указателна променлива *ptr и нормална променлива l от тип Length.
  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. Създайте член на struct Person. Членът се нарича гражданство и е от тип integer.
  6. Създайте член на struct Person. Членът се нарича age и е от тип integer.
  7. Край на тялото на структура Person.
  8. Създайте функция, която приема екземпляра на struct Person, p, като аргумент.
  9. Извикайте основната функция. { маркира началото на тялото на функцията main().
  10. Създайте екземпляр на struct Person и му дайте името p.
  11. Осъществете достъп до гражданството на променливата член на структурата, като използвате екземпляра на структурата, p, и й присвоите стойност 1.
  12. Осъществете достъп до променливата age на члена на структурата, като използвате екземпляра на структурата, p, и й присвоите стойност 27.
  13. Извикайте функцията и й предайте екземпляра на структурата Person, p, като аргумент.
  14. Функцията трябва да върне стойност при успешно изпълнение.
  15. Край на тялото на функцията main().
  16. Създайте тялото на функцията.
  17. Началото на тялото на функцията.
  18. Осъществете достъп до стойността на гражданството на члена на структурата и я отпечатайте на конзолата заедно с друг текст.
  19. Осъществете достъп до стойността на възрастта на члена на структурата и я отпечатайте на конзолата заедно с друг текст.
  20. Край на тялото на функцията.

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

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

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

Въпроси и Отговори

In C++ Структурата и класът са почти идентични. Единствената реална разлика е достъпът по подразбиране: членовете на структурата са публични по подразбиране, докато членовете на класа са частни. И двата поддържат функции-членове, конструктори и наследяване.

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

Декларирайте структурата, след което дефинирайте масив от нея, например Person people[3]. Всеки елемент е пълна структура и достъпът до членовете се осъществява чрез people[0].age. Масивите от структури съхраняват много записи от един и същи тип заедно.

Вложената структура е структура, декларирана като член вътре в друга структура. Тя групира свързани подданни, като например структура Date, поставена вътре в структура Employee. До вътрешните членове се стига чрез свързване на оператора dot.

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

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

Да. Асистентите за кодиране с изкуствен интелект превръщат кратка подкана или коментар в пълноценен C++ структура, включително членове, конструктори и достъп до полета. Винаги преглеждайте генерираните типове данни и подравняването, тъй като изкуственият интелект може да пропусне специфичните за проекта изисквания.

Да. Копилот на GitHub предлага дефиниции на структури, променливи-членове и достъп с точка или стрелка, докато пишете в редактора. Справя се добре с повтарящи се шаблонни елементи, въпреки че все пак трябва да проверите типовете, допълването и логиката преди компилиране.

Обобщете тази публикация с: