Como fazer uma variedade de estruturas em c

Como fazer uma variedade de estruturas em c
Primeiro, entenderemos as estruturas em C e depois discutiremos sobre a variedade de estruturas em C. Também passaremos pela variedade de ponteiros da estrutura e como acessar os membros da estrutura dentro da variedade de objetos de estrutura.

Estruturas são o grupo definido pelo usuário de tipos de dados semelhantes ou diferentes. Grupo semelhante ou diferente de tipos de dados pode ser agrupado em um nome conhecido como estruturas. Exemplo de declaração de estrutura em C:

Estrutura abc
Int a;
Char B;
Flutuar c;
;

Para criar objeto a partir da declaração da estrutura, aqui está a sintaxe em C para fazê -lo:

Estrutura abc obj;

Com esta criação de objetos, a memória é atribuída à estrutura. Para acessar o membro de estruturas com a ajuda do objeto (OBJ), pode ser feito como:

Obj.a = 10; obj.b = 'c'; obj.c = 1.0;

É o caso quando o objeto é criado, não há necessidade de alocar nenhuma memória. Uma vez que o objeto for instanciado, a memória será alocada automaticamente.

A alocação de memória para a estrutura pode ser feita em tempo de execução. Para alocação de tempo de execução, a função malloc pode ser usada.

Haverá uma declaração de ponteiro para a estrutura. A declaração do ponteiro para a estrutura pode ser feita como estrutura abc *ptr; Com esta declaração, não haverá atribuição de nenhuma memória para o objeto de estrutura. A função malloc deve ser usada para alocar memória e abaixo é a sintaxe para fazê -lo:

Estrutura abc *ptr;
ptr = malloc (sizeof (struct ABC));

Agora, o PTR terá a memória atribuída. Ele pode armazenar os dados para os elementos dos membros da estrutura.

Para acessar os membros da estrutura com a ajuda de ponteiros, podem ser feitos da seguinte forma:

Ptr-> a = 10; ptr-> b = 'c'; ptr-> c = 2.0;

Até agora, discutimos o objeto de estrutura única. Ambas as formas de acesso dos elementos dos membros, vimos através de ponteiros e acesso direto com objetos.

Temos duas maneiras de definir as estruturas, primeiro é definir o objeto de estrutura e outra maneira é definir o ponteiro para a estrutura.

Objeto de estrutura: struct abc obj;
Ponteiro da estrutura: estrutura abc *ptr;

Agora, vamos discutir a variedade de objetos de estrutura e matriz de ponteiros de estrutura. Array é um grupo de objetos do mesmo tipo. Por exemplo, a matriz de OBJ será declarada como Struct ABC OBJ [128]. A variedade de ponteiros para os objetos da estrutura será como estrutura abc *ptr [128]. Ambos a matriz definiram os 128 elementos de objetos de estrutura e ponteiros.

C Programa para declarar objeto de estrutura:

#incluir
estrutura abc
int a;
Char B;
flutuar c;
;
int main ()

estrutura abc obj = 1, 'c', 3.4;
printf ("a =%d, b =%c, c =%f \ n", obj.a, obj.B, Obj.c);
retornar 0;

Saída:

Bash-4.2 $ ./a.fora
a = 1, b = c, c = 3.400000
Bash-4.2 $

O programa acima define o objeto da estrutura e uma maneira de inicializar o membro enquanto declarava o objeto. Inicializamos as variáveis ​​do membro com valores específicos e imprimimos essas variáveis ​​acessando os membros diretamente. A é atribuído com 1, B é atribuído com 'C' e C é atribuído com o valor da flutuação 3.4. Abaixo está o instantâneo do programa e saída.

Instantâneo:

C Programa para declarar o ponteiro para a estrutura:

#incluir
estrutura abc
int a;
Char B;
flutuar c;
;
int main ()

estrutura abc *ptr;
ptr = malloc (sizeof (struct ABC));
ptr-> a = 4;
ptr-> b = 'd';
ptr-> c = 5.5;
printf ("a =%d, b =%c, c =%f \ n", ptr-> a, ptr-> b, ptr-> c);
retornar 0;

Saída:

Bash-4.2 $ ./a.fora
a = 4, b = d, c = 5.500000
Bash-4.2 $

O programa acima define o ponteiro para objeto de estrutura. A função malloc é usada para alocar memória para a variável de ponteiro. Inicializamos as variáveis ​​de membro com valores específicos e imprimimos essas variáveis ​​acessando os membros com ponteiro. A é atribuído com 4, B é atribuído com 'D' e C é atribuído com o valor do float 5.5. Abaixo está o instantâneo do programa e saída.

Instantâneo:

Agora, vamos seguir o programa C para uma variedade de estruturas e variedade de ponteiros para estruturas.

C Programa para Matriz de Estrutura dos Objetos:

#incluir
estrutura abc
int a;
Char B;
flutuar c;
;
int main ()

estrutura abcobj [2];
obj [0].a = 4;
obj [0].b = 'd';
obj [0].c = 5.5;
OBJ [1].a = 5;
OBJ [1].b = 'f';
OBJ [1].c = 8.2;
printf ("[0] a =%d, [0] b =%c, [0] c =%f \ n", obj [0].a, obj [0].B, OBJ [0].c);
printf ("[1] a =%d, [1] b =%c, [1] c =%f \ n", obj [1].a, obj [1].B, OBJ [1].c);
retornar 0;

Saída:

Bash-4.2 $ ./a.fora
[0] a = 4, [0] B = D, [0] C = 5.500000
[1] A = 5, [1] B = F, [1] C = 8.200000
Bash-4.2 $

O programa acima define a matriz de objeto de estrutura e uma maneira de inicializar os membros com a ajuda de objetos. Inicializamos as variáveis ​​do membro com valores específicos e imprimimos essas variáveis ​​acessando os membros diretamente. Por simplicidade, pegamos apenas 2 objetos. O primeiro objeto é atribuído com 4, b é atribuído com 'd' e c é atribuído com o valor do float 5.5. O segundo objeto A é atribuído com 5, B é atribuído com 'f' e c é atribuído com o valor da flutuação 8.2. Abaixo está o instantâneo do programa e saída.

Instantâneo:

C Programa para Matriz de Ponteiros para Estrutura de Objetos:

#incluir
estrutura abc
int a;
Char B;
flutuar c;
;
int main ()

estrutura abc *ptr [2];
ptr [0] = malloc (sizeof (struct ABC));
ptr [1] = malloc (sizeof (struct ABC));
ptr [0]-> a = 4;
ptr [0]-> b = 'd';
ptr [0]-> C = 5.5;
ptr [1]-> a = 5;
ptr [1]-> b = 'f';
ptr [1]-> C = 8.2;
printf ("[0] a =%d, [0] b =%c, [0] c =%f \ n", ptr [0]-> a, ptr [0]-> b, ptr [0] -> c);
printf ("[1] a =%d, [1] b =%c, [1] c =%f \ n", ptr [1]-> a, ptr [1]-> b, ptr [1] -> c);
retornar 0;

Saída:

Bash-4.2 $ ./a.fora
[0] a = 4, [0] B = D, [0] C = 5.500000
[1] A = 5, [1] B = F, [1] C = 8.200000
Bash-4.2 $

O programa acima define a variedade de ponteiros para objeto de estrutura e uma maneira de inicializar os membros com a ajuda de ponteiros. Inicializamos as variáveis ​​de membros com valores específicos e imprimimos essas variáveis ​​acessando os membros com variáveis ​​de ponteiro. Por simplicidade, pegamos apenas 2 ponteiros. O primeiro ponteiro para o objeto A é atribuído com 4, B é atribuído com 'D' e C é atribuído com o valor do float 5.5. O segundo ponteiro do objeto A é atribuído com 5, B é atribuído com 'f' e c é atribuído com o valor da flutuação 8.2. Abaixo está o instantâneo do programa e saída.

Instantâneos:

Conclusão:

Discutimos o tipo de dados da estrutura em C e as maneiras de declarar os objetos e ponteiros para estruturar objetos. Também discutimos poucos exemplos e com saída. Tanto os objetos quanto os ponteiros foram discutidos. Matriz de objetos e ponteiro para objetos também foram discutidos com exemplos.