Registros / Estrutura
Registro ou Estrutura são tipos de dados definíveis pelo usuário.
Trata-se de uma coleção de variáveis referenciadas por um nome com o objetivo de fornecer informações relacionadas agrupadas.
As variáveis que compõem a estrutura são denominadas “Membros da Estrutura”, também chamadas de “Elementos” ou “Campos”.
Definições de Estruturas
Para definir uma estrutura, utilizamos o comando struct:
struct endereco
{
char logradouro[50];
char cidade[30];
char estado[2];
long int cep;
}
Porém, com isso nenhuma variável foi de fato declarada, apenas o novo tipo de dados foi definido. Para declarar uma variável do tipo endereço devemos utilizar:
struct endereco infoEndereco;
Sendo que, com isso, estamos criando uma variável chamada infoEndereco, que é do tipo endereco (estrutura definida).
Alocação de Memória – Estruturas
Quando uma variável de estrutura é declarada, o compilador C aloca automaticamente memória suficiente para acomodar todos os membros da estrutura. Tomando como base o exemplo anterior:
Logradouro – 50 bytes
Cidade – 30 bytes
Estado – 2 bytes
Cep – 4 bytes
Referenciando Elementos
Dado o exemplo anterior, para atribuir ou ler valores da variável infoEndereco:
infoEndereco.cep=13200100;
strcpy(infoEndereco.cidade,"Jundiai");
gets(infoEndereco.estado);
printf("A cidade e: %s", infoEndereco.cidade);
Vetores de Estruturas
O uso mais comum de estruturas, é através de vetores de estruturas.
O exemplo a seguir mostra como declaramos um vetor de 100 posições do tipo “endereco” criado:
struct endereco info_endereco[100];
Para acessar um dado do vetor de estrutura:
printf("%d",info_endereco[2].cep);
Exemplo de Estrutura
#include stdio.h
struct endereco //Criação da estrutura de Endereço
{
char logradouro[50];
char cidade[30];
char estado[2];
long int cep;
};
int main(int argc, char *argv[])
{
struct endereco infoEndereco; //declara variável do tipo estrutura
puts("Informe o logradouro: "); //Leitura dos dados
gets(infoEndereco.logradouro);
puts("Informe a cidade: ");
gets(infoEndereco.cidade);
puts("Informe o estado: ");
gets(infoEndereco.estado);
puts("Informe o CEP: ");
scanf("%d",&infoEndereco.cep);
//Exibição da informação.
printf("\n\nEndereco: %s, %s - %s CEP: %d", infoEndereco.logradouro,
infoEndereco.cidade, infoEndereco.estado, infoEndereco.cep);
system("PAUSE>>NULL");
return 0;
}
Observação: Conteúdo do material desenvolvido pelo Professor César Tofanini, adaptado pelo Professor Rodrigo Saito
Exercício
Faça um programa em C, que trabalhe com estruturas e com funções. O programa deverá ter as seguintes estruturas:
struct data
{
int dia;
int mes;
int ano;
};
struct cliente
{
int uso; //"1" se a posição estiver em uso e "0" se não estiver
char nome[40];
char endereco[40];
char bairro[30];
char cidade[20];
char uf[2];
char cep[8];
float salario;
struct data data_admissao;
};
Esse programa deverá conter:
– Menu principal, contendo opção para a chamada de funções;
– Função para incluir um registro;
– Função para excluir um registro (pela posição do vetor);
– Função para listar um registro (pela posição do vetor);
– Função para listar todos os registros cadastrados no vetor;