Uma tabela é usada para agrupar elementos do mesmo tipo, ou seja, codificados no mesmo número de bits e da mesma maneira. No entanto, ele é, geralmente, útil para reunir elementos de tipos diferentes, como os inteiros e as cadeias de caracteres (strings).
As estruturas podem remediar essa deficiência das tabelas, agrupando objetos (variáveis) dentro de uma entidade identificada por um único nome de variável.
Os objetos contidos na estrutura são chamados de campos de estrutura.
Na declaração da estrutura, indicamos os campos da estrutura, ou seja, o tipo e o nome das variáveis que a compõem:
struct Nome_Estrutura { tipo_campo1 Nome_Campo1; tipo_ campo2 Nome_Campo2; tipo_campo3 Nome_Campo3; tipo_campo4 Nome_Campo4; tipo_campo5 Nome_Campo5; ... };
A última chave deve ser seguida de um ponto e vírgula!
Assim, a seguinte estrutura está correta:
struct MinhaEstrutura { int Age; char Sexe; char Nome[12]; float MédiaEscolar; struct OutraEstrutura StructBis; /* considerando que a estrutura OutraEstrutura foi definida */ };
Em compensação, a seguinte estrutura está incorreta:
struct MinhaEstrutura { int Age; char Age; struct MinhaEstrutura StructBis; };
Há duas razões para isso:
A declaração de uma estrutura só dá a aparência da estrutura, isto é, uma espécie de definição de um tipo de variável complexa. A declaração não reserva espaço de memória para uma variável estruturada (variável do tipo estrutura), então, é preciso definir uma (ou mais) variáveis estruturadas depois de declarar a estrutura...
A definição de uma variável estruturada é uma operação que consiste em criar uma variável tendo como tipo aquele de uma estrutura que foi previamente declarada, ou seja, nomeá-la e reservar-lhe um local na memória.
A definição de uma variável estruturada é feita da seguinte forma:
struct Nome_Estrutura Nome_Variável_Estruturada;
Nome_Estrutura representa o nome de uma estrutura que teremos declarado anteriormente.
Nome_Variável_Estruturada é o nome que se dá à variável estruturada.
Claro que, como no caso das variáveis, podemos definir diversas variáveis estruturadas, separando-as com vírgulas:
struct Nome_Estrutura Nome1, Nome2, Nome3, ...;
Seja a estrutura Pessoa :
struct Pessoa{ int Age; char Sexo; };
Podemos definir diversas variáveis estruturadas:
struct Pessoa Pedro, Paulo, Jacques;
Cada variável do tipo estrutura possui campos marcados com nomes exclusivos. No entanto, o nome dos campos não basta para acessa-los, já que eles só têm contexto dentro da variável estruturada ...
Para acessar os campos de uma estrutura usamos o operador de campo (um único ponto) colocado entre o nome da variável estruturada que foi definida, e o nome do campo:
Nome_Variável.Nome_Campo</ code>
Assim, para atribuir valores à variável Pedro (variável do tipo struct Pessoa definido anteriormente), poderemos escrever: <code>Pedro.Age = 18;
Já que uma estrutura é composta de elementos de tamanho fixo, é possível criar uma tabela contendo apenas elementos do tipo de uma determinada estrutura. Basta criar uma tabela cujo tipo é o da estrutura e identificá-la com um nome de variável: <code>struct Nome_Estrutura Nome_Tabela[Número_Elementos];
Cada elemento da tabela representa, então, uma estrutura do tipo que definimos...
A tabela a seguir (chamada Diretório) poderá conter, por exemplo, oito variáveis estruturadas do tipo struct Pessoa:
struct Pessoa Diretório[8];
Da mesma maneira, é possível manipular estruturas nas funções.