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

  1. struct struct_name {
  2. member1_type member1_name; // например: int number;
  3. member2_type member2_name;
  4. member3_type member3_name;
  5. // структурата може да има неограничен брой членове
  6. } instance_names; // това е опционално и декларира инстанции на структурата


struct_name е името на структурата, instance_names може да бъде набор от валидни идентификатори на обекти от типа на структурата (ще ви се изясни малко по-надолу). В самата структура се намира списък на членовете, дефинирани от определен тип и с даден идентификатор. Членовете могат да бъдат от всякакъв тип, възможно е дори самите те да бъдат структури, тогава говорим за вложени структури.

При създаването на структура, ние създаваме нов тип, който може да бъде използван за създаване на нови обекти. За нагледен пример, разгледайте следния код:

  1. struct person {
  2. string name;
  3. int age;
  4. } ;
  5. person p1, p2;

Първо създаваме структурата person с два члена: name и age от тип съответно string и int. След декларирането на структурата, тя се превръща във валиден тип, каквито са int, char и т.н. Тоест можем да използваме името на структурата, за да създадем два нови обекта p1 и p2 от тип person.

Полето instance_names може да се използва за деклариране на обекти от типа на структурата, още при нейното създаване. Тоест следният пример е еквивалентен на горния (създаваме структурата и 2 обекта от този тип):

  1. struct person {
  2. string name;
  3. int age;
  4. } p1, p2;

След като вече сме декларирали нашите обекти, можем да достъпим техните членове използвайки точка след името на обекта и специфицирайки името на член данната след това. Пример:

  1. p1.name = „Pearson, Charles“
  2. p1.age = 28
  3. p2.name = „St James, Michael“
  4. p2.age = 32

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

Структурите могат да служат и като база данни ако построим масив от тях:

  1. struct book {
  2. string title;
  3. string author;
  4. int year;
  5. } books[1000];

В последния пример ще покажем възможността за създаване на структура в друга структура:

  1. struct author {
  2. string name;
  3. int age;
  4. };
  5. struct book {
  6. string title;
  7. author book_author;
  8. int year;
  9. } books[1000];

или

  1. struct book {
  2. string title;
  3. struct author {
  4. string name;
  5. int age;
  6. } book_author;
  7. int year;
  8. } books[1000];

Ето и как се достъпват елементите:

books[0].book_author.name
books[999].book_author.age

Автор: Мартин Михайлов