English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O C nos oferece a função de aninhar uma estrutura dentro de outra, criando tipos de dados complexos. Por exemplo, pode ser necessário armazenar o endereço do funcionário em uma estrutura. E o endereço também pode conter outras informações, como o número da rua, a cidade, a região e o código postal. Portanto, para armazenar o endereço do funcionário, devemos armazenar o endereço do funcionário em uma estrutura separada e aninhar o endereço dessa estrutura no funcionário dessa estrutura. Veja o seguinte programa.
#include<stdio.h> struct address { char city[20]; int pin; char phone[14]; }; struct employee { char name[20]; struct address add; }; void main () { struct employee emp; printf("Input employee information?\n"); scanf("%s %s %d %s",emp.name,emp.add.city, &emp.add.pin, emp.add.phone); printf("Imprimir informações do funcionário...\n"); printf("Nome: %s\nCidade: %s\nNúmero: %d\nTelefone: %s", emp.name, emp.add.city, emp.add.pin, emp.add.phone); }
Resultado da saída
Inserir informações do funcionário? Arun Delhi 110001 1234567890 Imprimir informações do funcionário... Nome: Arun Cidade: Delhi Número: 110001 Telefone: 1234567890
A estrutura pode ser aninhada da seguinte forma.
Através de estruturas separadas
Através da estrutura embutida
Aqui, criamos duas estruturas, mas a estrutura dependente deve ser usada como membro dentro da estrutura principal. Veja o exemplo a seguir.
struct Date { int dd; int mm; int yyyy; }; struct Employee { int id; char name[20]; struct Date doj; }}emp1;
Pode-se ver que o doj é uma variável do tipo date. Aqui, o doj é usado como membro da estrutura Employee. Dessa forma, podemos usar a estrutura Date em muitas estruturas.
A estrutura embutida nos permite declarar estruturas dentro da estrutura. Portanto, ela requer menos linhas de código, mas não pode ser usada em várias estruturas de dados. Veja o exemplo a seguir.
struct Employee { int id; char name[20]; struct Date { int dd; int mm; int yyyy; })doj; }}emp1;
We can access the members of the nested structure using Outer_Structure.Nested_Structure.member, as shown below:
e1.doj.dd e1.doj.mm e1.doj.yyyy
Let's look at a simple example of a nested structure in C language.
#include<stdio.h> #include<string.h> struct Employee { int id; char name[20]; struct Date { int dd; int mm; int yyyy; })doj; })e1; int main ( { //Store employee information e1.id =101; strcpy(e1.name, "Sonoo Jaiswal");//Copy a string to a character array e1.doj.dd =10; e1.doj.mm =11; e1.doj.yyyy =2014; //Print the information of the first employee printf("Employee ID : %d\n", e1.id); printf("Employee Name : %s\n", e1.name); printf("Employee Join Date (dd/mm/yyyy : %d/%d/%d\n", e1.doj.dd,e1.doj.mm,e1.doj.yyyy); return 0; }
Output:
Employee ID : 101 Employee Name : Seagull Ali Employee Join Date (dd/mm/yyyy : 10/11/2014
Just like other variables, structures can also be passed to functions. We can pass structure members to functions, or pass the structure variable itself. The following example passes the structure variable employee to the display() function, which is used to display the employee's details.
#include<stdio.h> struct address { char city[20]; int pin; char phone[14]; }; struct employee { char name[20]; struct address add; }; void display(struct employee) void main () { struct employee emp; printf("Input employee information?\n"); scanf("%s %s %d %s",emp.name,emp.add.city, &emp.add.pin, emp.add.phone); display(emp); } void display(struct employee emp) { printf("Imprimir informações do funcionário.....\n"); printf("%s %s %d %s",emp.name,emp.add.city,emp.add.pin,emp.add.phone); }