Introduzione alla struttura nidificata in C.

Ogni linguaggio di programmazione ha il suo modo di definire e descrivere le strutture. Quindi le strutture annidate come suggerisce il nome in C è una specie di definizione di una struttura all'interno di un'altra struttura. Qualsiasi variabile membro può essere definita all'interno di una struttura e, a sua volta, tale struttura può essere ulteriormente spostata in un'altra struttura. Le variabili all'interno di una struttura possono essere qualsiasi cosa come normale o puntatore o altro e possono essere posizionate ovunque all'interno della struttura.

È possibile accedere alla struttura nidificata in due modi:

  1. Struttura all'interno di una struttura in C usando la variabile pointer.
  2. Struttura all'interno di una struttura in C usando una variabile normale.

Sintassi:

Di seguito è la sintassi per la creazione di una struttura nidificata:

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

Funzionamento della struttura nidificata in C.

Dalla sintassi di cui sopra, possiamo dedurre il fatto che la struttura mem1 nidificata all'interno della struttura member1 conterrà il membro o la variabile a cui accedere e a tutti è possibile accedere in modo nidificato utilizzando. (punto) operatore.

  • mem2.mem1.var_1: si riferisce al primo membro della variabile della struttura tagname_1.
  • mem2.mem1.var_2: si riferisce al secondo membro della variabile della struttura tagname_2.

Faremo altri esempi per chiarire come la sintassi soddisfa il funzionamento della struttura nidificata.

Esempi n. 1

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

Nell'esempio sopra, la struttura uomo è definita all'interno di una struttura dipendente che è una struttura nidificata. È possibile accedere ai membri all'interno della struttura nidificata che è un uomo utilizzando la sintassi o il formato seguenti.

Come nell'esempio dato

  • employee.d .name: racconta il nome dell'uomo all'interno della struttura dei dipendenti.
  • employee.d .age: parlerà dell'età dell'uomo come dipendente.

È importante mettere in evidenza una cosa come questa struttura che l'uomo all'interno della struttura dei dipendenti non può essere riutilizzato, il che significa che non può essere richiamato in nessun punto dell'intero codice perché non è auto-generato.

Invece, una soluzione alternativa per questo può essere:

Avremmo potuto definire la struttura all'esterno e quindi poter dichiarare la variabile all'interno della struttura ovunque volessimo accedervi attraverso il codice.

Esempi n. 2

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

Inoltre, questa struttura può essere riutilizzata dalla struttura esterna.

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

Il vantaggio dell'uso di questo tipo di dichiarazione di struttura è che possiamo dichiarare una variabile di tipo struct man ovunque nel programma.

Nota: la nidificazione della struttura al suo interno non è mai consentita.

Vediamo un esempio di come non è consentito nidificare la struttura al suo interno.

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

Esempi di strutture nidificate in C

Di seguito sono riportati i diversi esempi di struttura nidificata in C:

Esempio n. 1 - Inizializzazione di strutture nidificate:

L'inizializzazione di strutture nidificate è possibile al momento della dichiarazione.

Codice:

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

Esempio

Codice:

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

Produzione:

Esempio n. 2 - Accesso ai membri all'interno della struttura nidificata mediante i puntatori:

Codice:

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

Produzione:

Esempio n. 3 - Passaggio del membro della struttura come argomenti per il funzionamento:

Codice:

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

Produzione:

Esempio n. 4 - Struttura all'interno della struttura usando una variabile normale.

Codice:

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

Produzione:

Esempio

Codice:

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

Produzione:

Nota: sebbene sia utile passare le variabili di struttura come argomento perché ci consente di far funzionare tutti i membri della struttura, ma questo non è un metodo convenzionale per farlo.

Conclusione

Le strutture in C sono un modo molto interessante per raggruppare e raggruppare tutte le variabili e le funzioni membro definite dall'utente in un'unica entità. Tuttavia, presenta alcune limitazioni in quanto non consente alle variabili di struttura e all'intera struttura di contenere i tipi di dati incorporati e di non utilizzare gli operatori. Pertanto, nel semplice futuro, forse queste caratteristiche possono essere curate.

Articoli consigliati

Questa è una guida alla struttura nidificata in C. Qui discutiamo del lavoro in struttura nidificata in C insieme a diversi esempi e implementazione del codice. Puoi anche leggere il seguente articolo per saperne di più -

  1. Le 11 principali funzionalità di C ++
  2. Esempi di schemi nella programmazione C.
  3. Algoritmo di moltiplicazione della matrice di programmazione C.
  4. Importanza di C # Generics

Categoria: