Introduktion til nestet struktur i C
Ethvert programmeringssprog har sin egen måde at definere og beskrive strukturer. Så indlejrede strukturer, som navnet antyder i C, er slags at definere en struktur inde i en anden struktur. Alle medlemsvariabler kan defineres i en struktur, og til gengæld kan strukturen yderligere flyttes til en anden struktur. Variablerne inde i en struktur kan være ligesom normal eller markør eller noget som helst og kan placeres hvor som helst i strukturen.
Nested Structure kan fås på to måder:
- Struktur inde i en struktur i C ved hjælp af markørvariablen.
- Struktur inde i en struktur i C ved hjælp af en normal variabel.
Syntaks:
Følgende er syntaks for oprettelse af en indlejret struktur:
structure tagname_1
(
var_1;
var_2;
var_3;
.
.
.
.
var n;
structure tagname_2
(
var_1;
var_2;
var_3;
.
.
.
var_n;
), mem1
) mem2;
Arbejde med indlejret struktur i C.
Fra ovenstående syntaks kan vi udlede det faktum, at mem1-struktur indlejret i medlem1-struktur vil indeholde medlemmet eller variablen, der skal åbnes, og at alle kan få adgang til en indlejret måde ved hjælp af. (dot) -operatør.
- mem2.mem1.var_1: Dette refererer til det første medlem af variablen i strukturen tagname_1.
- mem2.mem1.var_2: Dette henviser til det andet medlem af variablen i strukturen tagname_2.
Vi vil tage flere eksempler for at få klarhed i, hvordan syntaks tilfredsstiller funktionen af den indlejrede struktur.
Eksempler nr. 1
struct employee
(
struct man
(
char name (20);
int age;
char dob(10);
) d;
int empid;
char desg(10);
) emp;
I ovenstående eksempel defineres mandstruktur i en medarbejderstruktur, der er en indlejret struktur. Medlemmer inden for den indlejrede struktur, som er en mand, kan fås ved hjælp af nedenstående syntaks eller format.
Som i det givne eksempel
- medarbejder.d. navn : Det fortæller om navnet på manden i medarbejderstrukturen.
- medarbejder.d .age: Det fortæller om mandens alder som medarbejder.
Det er vigtigt at bringe en ting til mærke som denne struktur, mand inden for medarbejderstrukturen kan ikke genbruges, hvilket betyder, at den ikke kan kaldes igen hvor som helst i hele koden, fordi den ikke er selvgenereret.
I stedet kan en løsning på dette være:
Vi kunne have defineret strukturen udenfor og derefter kunne have erklæret variablen inde i strukturen, uanset hvor vi vil have adgang til den i hele koden.
Eksempler 2
Struct man
(
char name(20);
int age;
char dob (10);
);
Denne struktur kan også genbruges af den ydre struktur.
struct employee
(
struct man info;
int id;
char desg (10);
)
Fordelen ved at bruge denne type strukturerklæring er, at vi kan erklære en variabel af typen strukt-mand hvor som helst i hele programmet.
Bemærk: Indlejring af struktur i sig selv er aldrig tilladt.Lad os se et eksempel på, hvordan indlejring af struktur i sig selv ikke er tilladt.
struct teacher
(
char name(20);
char address(100);
int age();
struct teacher principal; // totally invalid way to create nested structure.
)
Eksempler på indlejrede strukturer i C.
Nedenfor er de forskellige eksempler på indlejret struktur i C:
Eksempel 1 - Initialisering af indlejrede strukturer:
Initialisering af indlejrede strukturer er mulig på erklæringstidspunktet.
Kode:
struct student
(
struct person info;
int rollno;
float marks(10);
)
struct student student_1 = (
("Anji", 26, 1995),
103,
92
);
Eksempel
Kode:
#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;
)
Produktion:
Eksempel # 2 - Adgang til medlemmer i indlejret struktur ved hjælp af Pointers:
Kode:
#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;
)
Produktion:
Eksempel # 3 - Videresendelse af strukturmedlem som argumenter til at fungere:
Kode:
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");
)
Produktion:
Eksempel 4 - Struktur inden i strukturen ved hjælp af en normal variabel.
Kode:
#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;
)
Produktion:
Eksempel
Kode:
#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;
)
Produktion:
Konklusion
Strukturer i C er en meget interessant måde at klynge og gruppere alle brugerdefinerede medlemsvariabler og -funktioner i en enhed. Men alligevel har det nogle begrænsninger, da det ikke tillader, at strukturvariabler og hele strukturen indeholder de indbyggede datatyper og ingen brug af operatører. Derfor i den fremtidige fremtid måske disse funktioner kan tages hånd om.
Anbefalede artikler
Dette er en guide til den indlejrede struktur i C. Her diskuterer vi arbejdet i indlejret struktur i C sammen med forskellige eksempler og kodeimplementering. Du kan også se på den følgende artikel for at lære mere -
- Top 11 funktioner i C ++
- Eksempler på mønstre i C-programmering
- Algoritme til C-programmering Matrixmultiplikation
- Betydningen af C # Generics