Introduksjon til nestet struktur i C
Ethvert programmeringsspråk har sin egen måte å definere og beskrive strukturer. Så nestede strukturer som navnet antyder i C er på en måte å definere en struktur i en annen struktur. Eventuelle medlemsvariabler kan defineres i en struktur og i sin tur kan strukturen videre flyttes inn i en annen struktur. Variablene i en struktur kan være noe som normalt eller pekeren eller hva som helst og kan plasseres hvor som helst i strukturen.
Nested Structure kan nås på to måter:
- Struktur inne i en struktur i C ved å bruke pekervariabelen.
- Struktur inne i en struktur i C ved hjelp av en normal variabel.
syntaks:
Følgende er syntaks for å lage en nestet 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;
Working of Nested Structure in C
Fra syntaksen ovenfor kan vi utlede det faktum at mem1-strukturen som er nestet inne i medlem1-strukturen, vil inneholde medlemmet eller variabelen som skal åpnes, og at alle kan nås på en nestet måte ved å bruke. (punkt) operatør.
- mem2.mem1.var_1: Dette refererer til det første medlemmet av variabelen til strukturen tagname_1.
- mem2.mem1.var_2: Dette refererer til det andre medlemmet av variabelen til strukturen tagname_2.
Vi vil ta flere eksempler for å få klarhet i hvordan syntaks tilfredsstiller arbeidet med den nestede strukturen.
Eksempler nr. 1
struct employee
(
struct man
(
char name (20);
int age;
char dob(10);
) d;
int empid;
char desg(10);
) emp;
I eksemplet ovenfor er mannstruktur definert i en ansattstruktur som er en nestet struktur. Du kan få tilgang til medlemmer i den nestede strukturen som er en mann ved å bruke syntaks eller format nedenfor.
Som i det gitte eksempelet
- medarbeider.d. navn: Det forteller om navnet på mannen i arbeidstakerstrukturen.
- ansatt.d .age: Det vil fortelle om alderen til mannen som ansatt.
Det er viktig å legge merke til en ting som denne strukturen mannen i ansattes struktur ikke kan gjenbrukes, noe som betyr at den ikke kan kalles igjen hvor som helst i hele koden fordi den ikke er egengenerert.
I stedet kan en løsning på dette være:
Vi kunne ha definert strukturen utenfor og så kunne ha erklært variabelen inne i strukturen uansett hvor vi ønsker å få tilgang til den gjennom koden.
Eksempler nr. 2
Struct man
(
char name(20);
int age;
char dob (10);
);
Denne strukturen kan også gjenbrukes av den ytre strukturen.
struct employee
(
struct man info;
int id;
char desg (10);
)
Fordelen med å bruke denne typen strukturdeklarasjoner er at vi kan erklære en variabel av typen struct man hvor som helst i hele programmet.
Merk: Hekking av struktur i seg selv er aldri tillatt.La oss se et eksempel på hvordan det ikke er tillatt å hekke struktur i seg selv.
struct teacher
(
char name(20);
char address(100);
int age();
struct teacher principal; // totally invalid way to create nested structure.
)
Eksempler på nestede strukturer i C.
Nedenfor er de forskjellige eksemplene på nestet struktur i C:
Eksempel 1 - Initiering av nestede strukturer:
Initialisering av nestede 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;
)
Produksjon:
Eksempel # 2 - Tilgang til medlemmer i den nestede strukturen ved hjelp av 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;
)
Produksjon:
Eksempel nr. 3 - Formidling av strukturmedlem som argumenter for å 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");
)
Produksjon:
Eksempel 4 - Struktur i strukturen ved bruk av 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;
)
Produksjon:
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;
)
Produksjon:
Merk: Selv om det er bra å passere strukturvariabler som et argument fordi det tillater oss å gi alle strukturdeler til å fungere, men likevel er dette ikke en konvensjonell metode for å gjøre det.Konklusjon
Strukturer i C er en veldig interessant måte å gruppere og gruppere alle brukerdefinerte medlemsvariabler og funksjoner i en enhet. Men likevel har det noen begrensninger som at det ikke tillater strukturvariabler og hele strukturen å inneholde de innebygde datatypene og ingen bruk av operatører. Derfor i løpet av den fremtidige kanskje disse funksjonene kan tas vare på.
Anbefalte artikler
Dette er en guide til Nested Structure i C. Her diskuterer vi arbeidet i Nested Structure i C sammen med forskjellige eksempler og kodeimplementering. Du kan også se på følgende artikkel for å lære mer -
- Topp 11 funksjoner i C ++
- Eksempler på mønstre i C-programmering
- Algoritme av C-programmering Matrix Multiplikasjon
- Betydningen av C # Generics