Введение во вложенную структуру в C

Любой язык программирования имеет свой собственный способ определения и описания структур. Таким образом, вложенные структуры, как следует из их названия в C, являются своего рода определением одной структуры внутри другой структуры. Любые переменные-члены могут быть определены внутри структуры и, в свою очередь, эта структура может быть в дальнейшем перемещена в другую структуру. Переменные внутри структуры могут быть чем угодно, обычными или указательными, или что угодно, и могут быть размещены в любом месте структуры.

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

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

Синтаксис:

Ниже приведен синтаксис для создания вложенной структуры:

structure tagname_1
(
var_1;
var_2;
var_3;
.
.
.
.
var n;
structure tagname_2
(
var_1;
var_2;
var_3;
.
.
.
var_n;
), mem1
) mem2;

Работа вложенной структуры в C

Из приведенного выше синтаксиса мы можем вывести тот факт, что структура mem1, вложенная в структуру member1, будет содержать член или переменную, к которой осуществляется доступ, и каждый может быть доступен вложенным способом с помощью. (точка) оператор.

  • mem2.mem1.var_1: Это относится к первому члену переменной структуры tagname_1.
  • mem2.mem1.var_2: Это относится ко второму члену переменной структуры tagname_2.

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

Примеры № 1

struct employee
(
struct man
(
char name (20);
int age;
char dob(10);
) d;
int empid;
char desg(10);
) emp;

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

Как в приведенном примере

  • employee.d .name: рассказывает об имени человека внутри структуры сотрудника.
  • employee.d .age: Он расскажет о возрасте человека как работника.

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

Вместо этого, обходной путь для этого может быть:

Мы могли бы определить структуру снаружи и затем объявить переменную внутри структуры, где бы мы ни хотели получить к ней доступ во всем коде.

Примеры № 2

Struct man
(
char name(20);
int age;
char dob (10);
);

Кроме того, эта структура может быть повторно использована внешней структурой.

struct employee
(
struct man info;
int id;
char desg (10);
)

Преимущество использования этого типа объявления структуры состоит в том, что мы можем объявить переменную типа struct man в любом месте программы.

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

Давайте рассмотрим пример того, как вложение структуры внутри себя не допускается.

struct teacher
(
char name(20);
char address(100);
int age();
struct teacher principal; // totally invalid way to create nested structure.
)

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

Ниже приведены различные примеры вложенной структуры в C:

Пример № 1 - Инициализация вложенных структур:

Инициализация вложенных структур возможна во время объявления.

Код:

struct student
(
struct person info;
int rollno;
float marks(10);
)
struct student student_1 = (
("Anji", 26, 1995),
103,
92
);

пример

Код:

#include
struct person
(
char name(20);
int age;
char dob(10);
);
struct student
(
struct person info;
int roll_no;
float marks;
);
int main ()
(
struct student p1;
printf("Details of student: \n\n");
printf("Enter name: ");
scanf("%s", p1.info.name);
printf("Enter age: ");
scanf("%d", &p1.info.age);
printf("Enter dob: ");
scanf ("%s", p1.info.dob);
printf("Enter roll no: ");
scanf("%d", &p1.roll_no);
printf("Enter marks: ");
scanf ("%f", &p1.marks);
printf("\n…………………..\n\n");
printf("Name: %s\n", p1.info.name);
printf("Age: %d\n", p1.info.age);
printf("DOB: %s\n", p1.info.dob);
printf("Roll no: %d\n", p1.roll_no);
printf("Marks: %.2f\n", p1.marks);
return 0;
)

Выход:

Пример # 2 - Доступ к членам внутри вложенной структуры с помощью указателей:

Код:

#include
#include
struct student_college_info
(
int college_id;
char college_name(50);
);
struct student_info
(
int id;
char name(20);
float percentage;
struct student_college_info clg_data;
) stu_data, *stu_data_ptr;
int main()
(
struct student_info stu_data = (2, "Anu", 92.5, 81145,
"SRM University");
stu_data_ptr = &stu_data;
printf(" Id is: %d \n", stu_data_ptr->id);
printf(" Name is: %s \n", stu_data_ptr->name);
printf(" Percentage is: %f \n\n",
stu_data_ptr->percentage);
printf(" College Id is: %d \n",
stu_data_ptr->clg_data.college_id);
printf(" College Name is: %s \n",
stu_data_ptr->clg_data.college_name);
return 0;
)

Выход:

Пример # 3 - Передача члена структуры в качестве аргументов функции:

Код:

struct teacher
(
char name (20);
int id;
int marks;
);
void print_struct (char name (), int id, int marks);
int main ()
(
struct teacher tea = ("nidhi", 5, 52);
print_struct (tea.name, tea.id, tea.marks);
return 0;
)
void print_struct (char name (), int id, int marks)
(
printf ("Name: %s\n", name);
printf ("id: %d\n", id);
printf ("Marks: %d\n", marks);
printf("\n");
)

Выход:

Пример № 4 - Структура внутри структуры с использованием нормальной переменной.

Код:

#include
#include
struct student_college_detail
(
nt college_id;
char college_name(50);
);
struct student_detail
(
int id;
char name(20);
float percentage;
struct student_college_detail clg_data;
) stu_data;
int main()
(
struct student_detail stu_data = (8, "Moam", 50.5, 562345,
"CSS University");
printf(" Id is: %d \n", stu_data.id);
printf(" Name is: %s \n", stu_data.name);
printf(" Percentage is: %f \n\n", stu_data.percentage);
nbsp;
printf(" College Id is: %d \n",
stu_data.clg_data.college_id);
printf(" College Name is: %s \n",
stu_data.clg_data.college_name);
return 0;
)

Выход:

пример

Код:

#include
#include
struct student
(
int id1;
int id2;
char e;
char f;
float percentage;
);
int main ()
(
int i;
struct student recrd1 = (3, 4, 'C', 'B', 80.5);
printf ("size of structure in bytes: %d\n",
sizeof(recrd1));
printf ("\nAddress of id1 = %u", &recrd1.id1);
printf("\nAddress of id2 = %u", &recrd1.id2 );
printf("\nAddress of a = %u", &recrd1.e );
printf("\nAddress of b = %u", &recrd1.f );
printf("\nAddress of percentage = %u”, &recrd1.percentage);
return 0;
)

Выход:

Примечание. Хотя хорошо передавать структурные переменные в качестве аргумента, поскольку это позволяет нам передавать все члены структуры в функцию, но все же это не обычный метод для этого.

Вывод

Структуры в C - это очень интересный способ кластеризации и группировки всех пользовательских переменных-членов и функций в одну сущность. Но, тем не менее, у него есть некоторые ограничения, например, он не позволяет структурным переменным и всей структуре содержать встроенные типы данных и не использовать операторы. Поэтому в будущем, возможно, об этих особенностях можно позаботиться.

Рекомендуемые статьи

Это руководство по Вложенной Структуре в C. Здесь мы обсуждаем работу во Вложенной Структуре в C вместе с различными примерами и реализацией кода. Вы также можете посмотреть следующую статью, чтобы узнать больше -

  1. Топ 11 возможностей C ++
  2. Примеры паттернов в C-программировании
  3. Алгоритм умножения матриц программирования на С
  4. Важность C # Generics