Вложена структура в С - Работа на вложена структура в С с примери

Съдържание:

Anonim

Въведение в вложената структура в С

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

Вложената структура може да бъде достъпна по два начина:

  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;

Работа на вложена структура в С

От горния синтаксис можем да заключим, че 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 .страница: Ще разкаже за възрастта на мъжа като служител.

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

Вместо това решение за това може да бъде:

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

Примери №2

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

Също така тази структура може да се използва повторно от външната структура.

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

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

Забележка: Влагането на структура в себе си никога не е позволено.

Нека да видим пример как не е позволено влагането на структура в себе си.

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, заедно с различни примери и изпълнение на код. Можете също да разгледате следната статия, за да научите повече -

  1. Топ 11 функции на C ++
  2. Примери за модели в програмирането на С
  3. Алгоритъм на C програмиране на матрично умножение
  4. Значение на C # Generics