Vous êtes sur la page 1sur 17

Estruturas em C

Estrutura em C
Coleo de variveis referenciada sob um nome (integrao de informaes afins). Declarao de estrutura criao de variveis de estruturas (elementos da estrutura).

Estruturas em C
Exemplo:
struct endereco { char nome[30]; char rua[40]; char cidade[20]; char estado[3]; unsigned long int cep; };

Nome endereco - etiqueta da estrutura


struct endereco info_adr; Declarao da varivel info_adr como do tipo estrutura endereco (alocao da memria neste ponto)

Estruturas em C
Exemplo:
struct endereco { char nome[30]; char rua[40]; char cidade[20]; char estado[3]; unsigned long int cep; }info_adr, binfo, cinfo;

Alocao da memria na declarao da estrutura; Definio de um tipo de estrutura endereco e declarao de variveis daquele tipo.

Estruturas em C
Exemplo:
struct { char nome[30]; char rua[40]; char cidade[20]; char estado[3]; unsigned long int cep; }info_adr;

Supresso da etiqueta quando h apenas uma varivel de um determinado tipo; tipo; Declarao de uma varivel info_adr como definida pela estrutura que a precede; precede;

Estruturas em C
Forma Geral:
struct nome_do_tipo_da_estrutura { tipo nome_de_elemento_1; tipo nome_de_elemento_2; tipo nome_de_elemento_3; . . . tipo nome_de_elemento_N; }variveis_estrutura;

Possibilidade de omisso do nome do tipo da estrutura (etiqueta) ou das variveis da estrutura, mas no de ambos.

Estruturas em C
Operador . (ponto) :
Referncia dos membros da estrutura nome_da_varivel_estrutura nome_do_elemento

info_adr.cep=91720260; /* atribui */ printf("%lu", info_adr.cep); /* imprime cep na tela */ printf("%s",info_adr.nome); /* imprime nome */ for(t=0;info_adr.nome[t];++t) putchar(info_adr.nome[t]); /*apresenta caractere por caractere */

Estruturas em C
Exemplo:
O que faz o programa abaixo?
#include <stdio.h> #include <conio.h> void main(void) { struct { char nome[30]; char rua[40]; char cidade[20]; char estado[3]; unsigned long int cep; }info_adr; register int t;

Estruturas em C
clrscr(); printf("Digite um nome\n"); scanf("%s",info_adr.nome); printf("Digite o CEP\n"); scanf("%lu",&info_adr.cep); printf("O nome e CEP digitados foram %s e %lu\n\n", info_adr.nome, info_adr.cep); for(t=0;info_adr.nome[t];++t) { putchar(info_adr.nome[t]); printf("\n"); } }

Estruturas em C
Exemplo:
Substitua o trecho equivalente de cdigo do programa anterior pelo apresentado abaixo e informe o que faz o programa.

register int t; clrscr(); printf("Digite um nome\n"); gets(info_adr.nome); printf("Digite uma rua\n"); gets(info_adr.rua); printf("Digite o CEP\n"); scanf("%lu",&info_adr.cep); printf("O nome, a rua e o CEP digitados foram %s, %s e %lu\n\n", info_adr.nome, info_adr.rua, info_adr.cep); }

Estruturas em C
Matrizes de Estruturas
struct endereco info_adr[100]; /* cria 100 conjuntos de variveis que sao organizadas como definido na estrutura endereco */ printf("%lu", info_adr[2].cep); /* imprime na tela o cep da estrutura 3 da matriz de 100 estruturas */

Estruturas de Dados C
Apontadores e Estruturas
struct coord { float x, y, z; } ponto; ponto;

//declara a variavel ponto do tipo struct coord struct coord *aponto; // apontador para uma variavel qualquer do aponto; tipo struct coord aponto = &ponto; ponto; // aponto aponta para a varivel ponto

Estruturas de Dados C
Apontadores e Estruturas
Operador acesso direto a membros de uma estrutura via apontador
aponto -> x = 1.0; aponto -> y = -3.1;

Estruturas em C
O que faz o programa ?
#include <stdio.h> #include <conio.h> struct relogio{ int horas; int minutos; int segundos; }; void display(struct relogio *t); void update(struct relogio *t); void delay(void);

Estruturas em C
void main(void) { struct relogio tempo; int i; clrscr(); tempo.horas=0; tempo.minutos=0; tempo.segundos=0; for(;;){ update(&tempo); display(&tempo); } }

Estruturas em C
void update(struct relogio *t) { t->segundos++; if(t->segundos==60){ t->segundos=0; t->minutos++; } if(t->minutos==60){ t->minutos=0; t->horas++; } if(t->horas==24) t->horas = 0; delay(); }

Estruturas em C
void display(struct relogio *t) { printf("%02d:", t->horas); printf("%02d:", t->minutos); printf("%02d\n", t->segundos); } void delay(void) { long int t; for(t=1;t<50000;++t); }

Vous aimerez peut-être aussi