C++ Структура с пример
Какво е структура в C++?
A СТРУКТУРА е C++ структура от данни, която може да се използва за съхраняване заедно на елементи от различни типове данни. в C++, структурата е тип данни, дефиниран от потребителя. Структурата създава тип данни за групиране на елементи от различни типове данни под един тип данни.
Например:
Да предположим, че трябва да съхраните информация за някого, неговото име, гражданство и възраст. Можете да създадете променливи като име, гражданство и възраст, за да съхранявате данните отделно.
Въпреки това може да се наложи да съхранявате информация за много хора в бъдеще. Това означава, че ще бъдат създадени променливи за различни индивиди. Например име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; }
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в нашата програма, за да използвате дефинираните в него функции.
- Включете пространството от имена std, за да използвате неговите класове, без да го извиквате.
- Създайте структура с име Person.
- Началото на структурното тяло.
- Създайте член на структура с име гражданство от тип цяло число.
- Създайте член на структура с име възраст от тип цяло число.
- Край на тялото на структурата.
- Извикайте функцията main(). Логиката на програмата трябва да се добави в тялото на тази функция.
- Създайте екземпляр на структурата Person и му дайте името p.
- Задайте стойността на гражданството на члена на структурата на 1.
- Задайте стойността на struct member age на 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 в нашата програма, за да използвате неговите класове, без да го извиквате.
- Създайте структура с име Length.
- Начало на тялото на структурата Дължина.
- Създайте член на структура с име meters от целочислен тип данни.
- Създайте член на структура с име сантиметри от тип цяло число.
- Край на тялото на конструкцията Дължина.
- Извикайте функцията main().
- Начало на тялото на функцията main().
- Създайте указателна променлива *ptr и нормална променлива l от тип Length.
- Съхранявайте адреса на променлива 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.
- Създайте член на struct Person. Членът се нарича гражданство и е от тип integer.
- Създайте член на struct Person. Членът се нарича age и е от тип integer.
- Край на тялото на структура Person.
- Създайте функция, която приема екземпляра на struct Person, p, като аргумент.
- Извикайте основната функция. { маркира началото на тялото на функцията main().
- Създайте екземпляр на struct Person и му дайте името p.
- Осъществете достъп до гражданството на променливата член на структурата, като използвате екземпляра на структурата, p, и й присвоите стойност 1.
- Осъществете достъп до променливата age на члена на структурата, като използвате екземпляра на структурата, p, и й присвоите стойност 27.
- Извикайте функцията и й предайте екземпляра на структурата Person, p, като аргумент.
- Функцията трябва да върне стойност при успешно изпълнение.
- Край на тялото на функцията main().
- Създайте тялото на функцията.
- Началото на тялото на функцията.
- Осъществете достъп до стойността на гражданството на члена на структурата и я отпечатайте на конзолата заедно с друг текст.
- Осъществете достъп до стойността на възрастта на члена на структурата и я отпечатайте на конзолата заедно с друг текст.
- Край на тялото на функцията.
Ограничение на a C++ структура
Следните са ограниченията на структурите:
- Типът данни struct не може да се третира като вградени типове данни.
- Operaторове като + -, а други не могат да се използват върху структурни променливи.
- Структурите не поддържат скриване на данни. Членовете на една структура могат да бъдат достъпни от всяка функция, независимо от нейния обхват.
- Статичните членове не могат да бъдат декларирани в тялото на структурата.
- Конструктори не могат да се създават вътре в структура.
Oбобщение
- Структурата е структура от данни, която съхранява елементи от данни, принадлежащи към различни типове.
- Докато масивът съхранява елементи от данни от подобен тип, структурата съхранява елементи от данни от различни типове.
- Структура трябва да се използва, когато не се очаква елементите от данни да променят стойността си.
- Членовете на структура са достъпни с помощта на оператора точка (.).
- Трябва да създадем екземпляр на структурата.
- За да създадете C++ struct, използваме ключовата дума struct.
- Указателите, сочещи към структура, се създават подобно на това как се създават указатели, които сочат към обикновени типове.
- Структурата може да бъде предадена като аргумент на функция по същия начин, по който се предават обикновените функции.