Какво е структура в C ++?
А структура е структура C ++ данни, който може да се използва за съхраняване заедно елементи на различни типове данни. В C ++ структурата е дефиниран от потребителя тип данни. Структурата създава тип данни за групиране на елементи от различни типове данни под един тип данни.
Например:
Да предположим, че трябва да съхранявате информация за някого, името му, гражданството и възрастта. Можете да създадете променливи като име, гражданство и възраст, за да съхранявате данните отделно.
В бъдеще обаче може да се наложи да съхранявате информация за много хора. Това означава, че ще бъдат създадени променливи за различни индивиди. Например, име1, гражданство1, възраст1 и т.н. За да се избегне това, по-добре е да създадете структура.
В този урок за C ++ ще научите:
- Какво е структура в C ++?
- Кога да използвам структура?
- Инициализация на структурата на C ++
- Създаване на структурни екземпляри
- Достъп до членовете на структурата
- Указатели за структура
- Структура като аргумент на функцията
- Ограничение на C ++ структура
Кога да използвам структура?
Ето няколко причини за използване на структурата в C ++.
- Използвайте структура, когато трябва да съхранявате елементи от различни типове данни под един тип данни.
- С ++ структурите са по-скоро тип стойност, отколкото референтен тип. Използвайте структура, ако не възнамерявате да променяте данните си след създаването.
Инициализация на структурата на C ++
За да създадем C ++ структура, използваме ключовата дума struct, последвана от идентификатор. Идентификаторът става името на структурата. Ето синтаксиса за създаване на C ++ структура:
Синтаксис:
struct struct_name{// struct members}
В горния синтаксис използвахме ключовата дума struct. Името на структурата е името на структурата.
Членовете на структурата се добавят в фигурни скоби. Тези членове вероятно принадлежат към различни типове данни.
Например:
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:
#includeusing 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 of type integer.
- Край на тялото на структурата.
- Извикайте функцията main (). Логиката на програмата трябва да бъде добавена в тялото на тази функция.
- Създайте екземпляр на структурата Person и му дайте името p.
- Задайте стойността на гражданството на структурен член на 1.
- Задайте стойността на възрастта на член на структурата на 27.
- Отпечатайте стойността на гражданството на член на структурата на конзолата заедно с някакъв друг текст.
- Отпечатайте стойността на възрастта на член на структурата на конзолата заедно с някакъв друг текст.
- Програмата трябва да върне стойност, ако работи успешно.
- Край на функцията main ().
Указатели за структура
Възможно е да се създаде указател, който сочи към структура. Подобно е на това как се създават указатели, сочещи към естествени типове данни като int, float, double и т.н. Имайте предвид, че показалец в C ++ ще съхранява място в паметта.
Пример 2:
#includeusing 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.
- Начало на тялото на структурата Дължина.
- Създайте член на структура, наречен метри от цял тип данни.
- Създайте член на структура с име сантиметри от цяло число.
- Край на тялото на структурата Дължина.
- Извикайте функцията main ().
- Начало на тялото на основната () функция.
- Създайте променлива на указател * ptr и нормална променлива l от тип Length.
- Съхранявайте адреса на променлива l в нашата променлива на указателя.
- Показване на съобщение на конзолата, в което се иска от потребителя да въведе стойността за променливите метри.
- Прочетете стойността, въведена от потребителя чрез клавиатурата. Членовете на функцията за измерване тук са достъпни с помощта на променливата на указателя.
- Показване на съобщение на конзолата, в което се иска от потребителя да въведе стойността за променливи сантиметри.
- Прочетете стойността, въведена от потребителя чрез клавиатурата. Тук се осъществява достъп до членската функция сантиметри, като се използва променливата на указателя.
- Показвайте стойностите, прочетени от потребителя на конзолата, заедно с някакъв друг текст.
- Програмата трябва да върне стойност при успешно изпълнение.
- Край на тялото на основната () функция.
Структура като аргумент на функцията
Можете да предадете структура на функция като аргумент. Това се прави по същия начин като предаването на нормален аргумент. Структурните променливи също могат да бъдат предадени на функция. Добър пример е, когато трябва да покажете стойностите на членовете на struct. Нека демонстрираме това:
Пример 3:
#includeusing 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< Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в нашия файл. След това ще използваме неговите функции, без да получаваме грешки.
- Включете std пространството от имена в нашата програма, за да използвате нейните класове. Няма да има нужда да извикваме пространството от имена, за да използваме класовете му.
- Създайте структура с име Person.
- Начало на тялото на структурата Person.
- Създайте член на struct Person. Членът е с име гражданство и е от цяло число.
- Създайте член на struct Person. Членът се нарича възраст и е от тип цяло число.
- Край на тялото на структурата Person.
- Създайте функция, която приема екземпляра на struct Person, p като аргумент.
- Обадете се на основната функция. {Отбелязва началото на тялото на main () функция.
- Създайте екземпляр на struct Person и му дайте името p.
- Осъществете достъп до променливата гражданство на член на структурата, като използвате екземпляра на struct, p и му присвоите стойността 1
- Осъществете достъп до променливата възраст на член на структурата, като използвате екземпляра на struct, p и му присвоите стойността 27.
- Извикайте функцията и предайте на нея екземпляра на структурата Person, p, като аргумент.
- Функцията трябва да върне стойност при успешно изпълнение.
- Край на тялото на основната () функция.
- Създайте тялото на функцията.
- Началото на тялото на функцията.
- Осъществете достъп до стойността на гражданството на структурния член и го отпечатайте на конзолата заедно с друг текст.
- Отворете стойността на възрастта на члена на struct и я отпечатайте на конзолата заедно с друг текст.
- Край на тялото на функцията.
Ограничение на C ++ структура
Следват ограниченията на структурите:
- Типът на данните struct не може да се третира като вградени типове данни.
- Оператори като + - и други не могат да се използват за структурни променливи.
- Структурите не поддържат скриване на данни. Членовете на структура могат да бъдат достъпни от всяка функция, независимо от нейния обхват.
- Статичните членове не могат да бъдат декларирани в тялото на структурата.
- Конструкторите не могат да бъдат създадени в структурата.
Резюме:
- Структурата е структура от данни, която съхранява елементи от данни, принадлежащи към различни типове.
- Докато масивът съхранява елементи от данни от подобен тип, структурата съхранява елементи от данни от различни типове.
- Структура трябва да се използва, когато не се очаква елементите от данни да променят стойността си.
- Членовете на структурата са достъпни с помощта на оператора точка (.).
- Трябва да създадем екземпляр на структурата.
- За да създадем C ++ структура, използваме ключовата дума struct.
- Указателите, сочещи към структура, се създават по същия начин, както се създават указателите, които сочат към редовни типове.
- Структурата може да бъде предадена като аргумент на функция по същия начин, по който се предават обикновените функции.