Вложенная структура в C с примерами

Опубликовано: 10 Сентября, 2022

Предварительное условие: Структуры в C

Вложенная структура в C — это структура внутри структуры. Одна структура может быть объявлена внутри другой структуры таким же образом, как члены структуры объявляются внутри структуры.

Синтаксис:

struct name_1
{
    member1;
   member2;
   .
   .
   membern;

   struct name_2
   {
       member_1;
       member_2;
       .
       .
      member_n;
   }, var1
} var2;

Доступ к члену вложенной структуры можно получить, используя следующий синтаксис:

Variable name of Outer_Structure.Variable name of Nested_Structure.data member to access 

Пример:

  • Рассмотрим две структуры Employee (зависимая структура) и другую структуру под названием Organisation (внешняя структура) .
  • Структура Организация имеет элементы данных, такие как имя_организации, номер_организации.
  • Структура Employee вложена в структуру Organization и имеет элементы данных, такие как employee_id, имя, зарплата.

Для доступа к членам организации и сотрудника будет использоваться следующий синтаксис:

org.emp.employee_id;
org.emp.name;
org.emp.salary;

org.organisation_name;
org.organisation_number;

Here, org is the structure variable of the outer structure Organisation and emp is the structure variable of the inner structure Employee.

Различные способы вложения структуры

Структура может быть вложена следующими способами:

  1. По отдельной вложенной структуре
  2. По встроенной вложенной структуре .

1. По отдельной вложенной структуре: в этом методе создаются две структуры, но зависимая структура (Сотрудник) должна использоваться внутри основной структуры (Организация) в качестве члена. Ниже приведена программа C для реализации подхода:

Выход:

The size of structure organisation : 68
Organisation Name : GeeksforGeeks
Organisation Number : GFG123768
Employee id : 101
Employee name : Robert
Employee Salary : 400000

2. По встроенной вложенной структуре: использование этого метода позволяет объявить структуру внутри структуры и требует меньше строк кода.

Случай 1: Ошибка возникает, если структура присутствует, но структурная переменная отсутствует.

Выход:

Примечание:

Всякий раз, когда создается встроенная вложенная структура, объявление переменной обязательно в конце внутренней структуры, которая действует как член внешней структуры. Обязательно, чтобы структурная переменная создавалась в конце внутренней структуры.

Случай 2: Когда структурная переменная внутренней структуры объявлена в конце внутренней структуры. Ниже приведена программа C для реализации этого подхода:

Выход:

The size of structure organisation : 68
Organisation Name : GeeksforGeeks
Organisation Number : GFG123768
Employee id : 101
Employee name : Robert
Employee Salary : 400000

Недостаток вложенной структуры

Недостатком вложенных структур являются:

  • Независимое существование невозможно: важно отметить, что структура Employee не существует сама по себе. Нельзя объявлять структурную переменную типа struct Employee где-либо еще в программе.
  • Нельзя использовать в нескольких структурах данных: вложенную структуру нельзя использовать в нескольких структурах из-за ограничения объявления структурных переменных в основной структуре. Таким образом, наиболее рекомендуемым способом является использование отдельной структуры, и ее можно использовать в нескольких структурах данных.

Пример вложенной структуры C

Ниже приведен еще один пример вложенной структуры C.

Выход:

College name : GeeksforGeeks
Ranking : 7
Student id : 111
Student name : Paul
Roll no : 278

Примечание:

Вложенность структуры внутрь себя не допускается.

Пример:

struct student
{

    char name[50];

    char address[100];

    int roll_no;

    struct student geek; // Invalid

}

Передача вложенной структуры в функцию

Вложенную структуру можно передать в функцию двумя способами:

  1. Немедленно передайте вложенную структурную переменную.
  2. Передайте вложенные элементы структуры в качестве аргумента в функцию.

Давайте обсудим каждый из этих способов подробно.

1. Сразу передать вложенную структурную переменную: Как и другие переменные, вложенную структурную переменную также можно передать в функцию. Ниже приведена программа на C для реализации этой концепции:

Выход:

Printing the Details :
Organisation Name : GeeksforGeeks
Organisation Number : GFG111
Employee id : 278
Employee name : Paul
Employee Salary : 5000

2. Передайте вложенные элементы структуры в качестве аргументов в функцию: Рассмотрим следующий пример передачи члена структуры сотрудника в функцию display(), которая используется для отображения сведений о сотруднике.

Выход:

Printing the Details :
Organisation Name : GeeksforGeeks
Organisation Number : GFG111
Employee id : 278
Employee name : Paul
Employee Salary : 5000

Доступ к вложенной структуре

Доступ к вложенной структуре можно получить двумя способами:

  1. Использование нормальной переменной.
  2. Использование переменной указателя.

Давайте обсудим каждый из этих методов подробно.

1. Использование обычной переменной: переменные внешней и внутренней структуры объявляются как обычные переменные, и доступ к элементам данных внешней структуры осуществляется с помощью одной точки (.), а доступ к элементам данных внутренней структуры осуществляется с помощью двух точек. Ниже приведена программа C для реализации этой концепции:

Выход:

College ID : 14567  
College Name : GeeksforGeeks  
Student ID : 12  
Student Name : Kathy  
Student CGPA : 7.800000 

2. Использование переменной-указателя: одна обычная переменная и одна переменная-указатель структуры объявлены для объяснения разницы между ними. В случае переменной-указателя для доступа к элементам данных будет использоваться комбинация точек (.) и стрелок (->). Ниже приведена программа на C для реализации описанного выше подхода:

Выход:

College ID : 14567  
College Name : GeeksforGeeks  
Student ID : 12  
Student Name : Kathy  
Student CGPA : 7.800000 

Вложенная структура позволит создавать сложные типы данных в соответствии с требованиями программы.

C