Vnorená štruktúra v C Spracovanie vnorenej štruktúry v C s príkladmi

Obsah:

Anonim

Úvod do vnorenej štruktúry v C

Akýkoľvek programovací jazyk má svoj vlastný spôsob definovania a opisu štruktúr. Takže vnorené štruktúry, ako už názov napovedá v C, sú definíciou jednej štruktúry vo vnútri inej štruktúry. Akékoľvek členské premenné môžu byť definované vo vnútri štruktúry a naopak, táto štruktúra môže byť ďalej presunutá do inej štruktúry. Premenné vo vnútri štruktúry môžu byť čokoľvek ako normálne alebo ukazovatele alebo čokoľvek a môžu byť umiestnené kdekoľvek v rámci štruktúry.

Vnorenú štruktúru je možné získať dvoma spôsobmi:

  1. Štruktúra vo vnútri štruktúry v C pomocou ukazovacej premennej.
  2. Štruktúra vo vnútri štruktúry v C pomocou normálnej premennej.

syntaxe:

Nasleduje syntax na vytvorenie vnorenej štruktúry:

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

Spracovanie vnorenej štruktúry v C

Z vyššie uvedenej syntaxe môžeme odvodiť skutočnosť, že štruktúra mem1 vnorená vo vnútri štruktúry member1 bude obsahovať člena alebo premennú, ku ktorej sa má pristupovať, a ku každému sa dá pristupovať vnoreným spôsobom pomocou. (dot) operátor.

  • mem2.mem1.var_1: Toto sa týka prvého člena premennej štruktúry tagname_1.
  • mem2.mem1.var_2: Toto sa týka druhého člena premennej štruktúry tagname_2.

Urobíme viac príkladov, aby sme objasnili, ako syntax uspokojuje fungovanie vnorenej štruktúry.

Príklady # 1

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

V uvedenom príklade je štruktúra človeka definovaná vo vnútri štruktúry zamestnanca, ktorá je vnorenou štruktúrou. Členovia vnorenej štruktúry, ktorou je človek, sú prístupné pomocou syntaxe alebo formátu uvedeného nižšie.

Rovnako ako v uvedenom príklade

  • employee.d .name: Hovorí o mene muža vo vnútri štruktúry zamestnanca.
  • employee.d .age: Bude hovoriť o veku človeka ako zamestnanca.

Je dôležité upozorniť na jednu vec, ako je táto štruktúra, človek v rámci zamestnaneckej štruktúry nemôže byť znovu použitý, čo znamená, že ho nemožno volať znova kdekoľvek v celom kóde, pretože nie je vygenerovaný samostatne.

Namiesto toho môže byť toto riešenie:

Mohli sme definovať štruktúru vonku a potom sme mohli deklarovať premennú vo vnútri štruktúry, kdekoľvek by sme ju chceli získať v celom kóde.

Príklady # 2

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

Táto štruktúra môže byť tiež znovu použitá vonkajšou štruktúrou.

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

Výhodou použitia tohto typu deklarácie štruktúry je, že môžeme deklarovať premennú typu struct man kdekoľvek v celom programe.

Poznámka: Vnorenie štruktúry v sebe nie je nikdy povolené.

Pozrime sa na príklad toho, ako nie je povolené vnorenie štruktúry v sebe.

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

Príklady vnorených štruktúr v C

Nižšie sú uvedené rôzne príklady vnorených štruktúr v C:

Príklad č. 1 - Inicializácia vnorených štruktúr:

Inicializácia vnorených štruktúr je možná v čase vyhlásenia.

kód:

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

príklad

kód:

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

Výkon:

Príklad č. 2 - Prístup členov do vnorenej štruktúry pomocou ukazovateľov:

kód:

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

Výkon:

Príklad č. 3 - Odovzdávanie členov štruktúry ako argumentov na fungovanie:

kód:

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

Výkon:

Príklad č. 4 - Štruktúra vnútornej štruktúry pomocou normálnej premennej.

kód:

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

Výkon:

príklad

kód:

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

Výkon:

Poznámka: Aj keď je dobré predávať premenné štruktúry ako argument, pretože nám to umožňuje odovzdať fungovanie všetkým členom štruktúry, stále to však nie je obvyklá metóda.

záver

Štruktúry v C sú veľmi zaujímavým spôsobom, ako zoskupiť a zoskupiť všetky užívateľom definované premenné a funkcie členov do jednej entity. Stále však má určité obmedzenia, pretože neumožňuje premenné štruktúry a celej štruktúry obsahovať vstavané dátové typy a žiadne použitie operátorov. Preto sa v budúcnosti môže o tieto vlastnosti postarať.

Odporúčané články

Toto je príručka pre vnorenú štruktúru v C. Tu diskutujeme prácu v vnorenej štruktúre v C spolu s rôznymi príkladmi a implementáciou kódu. Viac informácií nájdete aj v nasledujúcom článku -

  1. Top 11 funkcií C ++
  2. Príklady vzorov v programovaní C
  3. Algoritmus násobenia matíc programovania C
  4. Dôležitosť C # generík