Gnezdena struktura v C - Delo ugnezdene strukture v C s primeri

Kazalo:

Anonim

Uvod v gnezdeno strukturo na C

Vsak programski jezik ima svoj način definiranja in opisovanja struktur. Torej, gnezdene strukture, kot pove že ime, na neki način definirajo eno strukturo znotraj druge strukture. Katere koli spremenljivke članice je mogoče definirati znotraj strukture, nato pa lahko to strukturo premaknete v drugo strukturo. Spremenljivke znotraj strukture so lahko karkoli običajnega ali kazalca ali česar koli in se lahko namestijo kjer koli v strukturi.

Do gnezdene strukture je mogoče dostopati na dva načina:

  1. Struktura znotraj strukture v C z uporabo spremenljivke kazalca.
  2. Struktura znotraj strukture v C z uporabo običajne spremenljivke.

Sintaksa:

Sledi sintaksa za ustvarjanje ugnezdene strukture:

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

Obdelava gnezdene strukture na C

Iz zgornje sintakse lahko sklepamo, da bo struktura mem1, ugnezdena znotraj strukture member1, vsebovala člana ali spremenljivko, do katere lahko dostopate, in vsi lahko dostopate na ugnezden način z uporabo. (pika) operater.

  • mem2.mem1.var_1: nanaša se na prvega člana spremenljivke tagname_1 strukture.
  • mem2.mem1.var_2: Nanaša se na drugega člana spremenljivke tagname_2 strukture.

Vzeli bomo več primerov, da bomo dobili jasnost o tem, kako skladnja zadovoljuje delovanje gnezdene strukture.

Primeri # 1

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

V zgornjem primeru je človeška struktura definirana znotraj strukture zaposlenega, ki je ugnezdena struktura. Do članov v gnezdeni strukturi, ki je moški, je mogoče dostopati s spodnjo sintakso ali obliko.

Kot v danem primeru

  • Ime zaposlenega.d: govori o imenu moškega znotraj strukture zaposlenega.
  • zaposleni.d .odgovor: Povelo bo starost moškega kot zaposlenega.

Pomembno je, da opazimo eno stvar, kot je ta struktura človeka v strukturi zaposlenih ne moremo ponovno uporabiti, kar pomeni, da je ni mogoče ponovno poklicati nikjer v celotni kodi, ker ni sam ustvarjena.

Namesto tega je rešitev tega lahko:

Lahko bi definirali strukturo zunaj in potem lahko razglasili spremenljivko znotraj strukture, kjerkoli bi radi dostopali do nje skozi celotno kodo.

Primeri # 2

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

Tudi to strukturo lahko ponovno uporabi zunanja struktura.

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

Prednost uporabe te vrste deklaracije strukture je, da lahko spremenimo spremenljivko tipa type type kjerkoli v programu.

Opomba: Gnezdenje strukture znotraj sebe nikoli ni dovoljeno.

Poglejmo primer, kako gnezdenje strukture znotraj sebe ni dovoljeno.

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

Primeri ugnezdenih struktur na C

Spodaj so različni primeri ugnezdene strukture na C:

Primer # 1 - Inicializacija ugnezdenih struktur:

Inicializacija ugnezdenih struktur je mogoča ob deklaraciji.

Koda:

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

Primer

Koda:

#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;
)

Izhod:

Primer # 2 - Dostop do članov znotraj ugnezdene strukture s pomočjo kazalcev:

Koda:

#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;
)

Izhod:

Primer # 3 - Prenos člana strukture kot argumentov za delovanje:

Koda:

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");
)

Izhod:

Primer # 4 - Struktura znotraj strukture z uporabo običajne spremenljivke.

Koda:

#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;
)

Izhod:

Primer

Koda:

#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;
)

Izhod:

Opomba: Čeprav je dobro posredovati spremenljivke strukture kot argument, ker nam omogoča, da vse člane strukture prenesemo na delovanje, vendar to še vedno ni običajna metoda.

Zaključek

Strukture v C so zelo zanimiv način združevanja in združevanja vseh uporabniško določenih spremenljivk in funkcij članov v eno celoto. Kljub temu ima nekaj omejitev, kot da ne dovoljuje, da spremenljivke strukture in celotna struktura vsebujejo vgrajene podatkovne vrste in ne uporabljajo operaterjev. Zato bo morda v prihodnosti mogoče poskrbeti za te lastnosti.

Priporočeni članki

To je priročnik za strukturo ugnezdenih elementov v C. Tukaj razpravljamo o delu v gnezdeni strukturi na C skupaj z različnimi primeri in implementacijo kode. Če želite izvedeti več, si oglejte tudi naslednji članek -

  1. 11 najboljših funkcij C ++
  2. Primeri vzorcev v C programiranju
  3. Algoritem pomnoževanja matrike C programiranja
  4. Pomen Generic C #