Вступ до вкладеної структури в С
Будь-яка мова програмування має свій спосіб визначення та опису структур. Отже, вкладені структури, як випливає з назви на C, є своєрідним визначенням однієї структури всередині іншої структури. Будь-які змінні члена можуть бути визначені всередині структури, і, в свою чергу, ця структура може бути перенесена в іншу структуру. Змінні всередині структури можуть бути будь-якими нормальними, вказівниками чи будь-якими, і їх можна розмістити в будь-якому місці структури.
Вкладена структура може бути доступна двома способами:
- Структура всередині структури в C за допомогою змінної вказівника.
- Структура всередині структури в 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;
Робота вкладеної структури в С
З вищенаведеного синтаксису ми можемо зробити висновок про те, що структура 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;
У наведеному вище прикладі структура людини визначається всередині структури працівника, яка є вкладеною структурою. До членів всередині вкладеної структури, яка є людиною, можна отримати доступ, використовуючи наведений нижче синтаксис або формат.
Як у наведеному прикладі
- найменування співробітника. d: в ньому йдеться про ім’я людини, що знаходиться в структурі працівника.
- служитель.d .age: це розповість про вік людини як працівника.
Важливо зауважити одне, як ця структура, людина в структурі співробітників не може бути використана повторно, а значить, її неможливо викликати ніде в усьому коді, оскільки він не генерується самостійно.
Натомість вирішення цього питання може бути:
Ми могли б визначити структуру назовні, а потім могли б оголосити змінну всередині структури, куди б ми не мали доступу до неї протягом коду.
Приклади №2
Struct man
(
char name(20);
int age;
char dob (10);
);
Також ця структура може бути використана зовнішньою структурою.
struct employee
(
struct man info;
int id;
char desg (10);
)
Перевага використання цього типу декларації структури полягає в тому, що ми можемо оголосити змінну типу type structure man в будь-якій точці програми.
Примітка: вкладення структури всередині себе ніколи не допускається.Подивимось приклад того, як гніздування структури всередині себе не допускається.
struct teacher
(
char name(20);
char address(100);
int age();
struct teacher principal; // totally invalid way to create nested structure.
)
Приклади вкладених структур у С
Нижче наведено різні приклади вкладеної структури в 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 разом з різними прикладами та реалізацією коду. Ви також можете переглянути наступну статтю, щоб дізнатися більше -
- Топ-11 особливостей C ++
- Приклади патернів у програмуванні на С
- Алгоритм множення матричного програмування на С
- Важливість C # Generics