Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Definio
Uma estrutura (struct) ou registro em C uma coleo de um ou mais valores, agrupados sob um nico nome. Estruturas constituem um recurso importante para organizar os dados utilizados por um programa graas possibilidade de tratar um grupo de valores como uma nica varivel
Exemplo de uso
struct ponto { int x; int y; }; struct funcionario { int registro; char nome[30]; char depto[5]; float salario; };
Exemplo de uso
As declaraes de ponto e funcionario, definem os respectivos tipos de dados, que podem ser utilizados em declaraes de variveis. Exemplos: struct ponto p1, p2, p3; struct funcionario Joao;
Na primeira declarao, esto sendo declaradas as variveis p1, p2 e p3 do tipo ponto. Na segunda declarao, declarada a varivel Joao do tipo funcionrio.
Exemplo de uso
Para uma varivel do tipo ponto, dizemos que x e y so seus campos ou membros. Os campos de uma varivel podem ser acessados individualmente como variveis usando-se o nome da varivel seguido de "." e o nome do campo. Exemplos: p1.x = 10; p1.y = 20; p2.x = p1.x + 5; p2.y = p2.y + 5; Alm disso, possvel atribuir a uma estrutura o valor de outra estrutura do mesmo tipo. Exemplos: funcionario f = Joao; p3 = p2;
Estruturas complexas
Os campos de uma estrutura podem ser de qualquer tipo: tipos simples (int, char, float, etc), vetores, ou at mesmo estruturas. Exemplo:
struct ponto constroiPonto(int x, int y){ struct ponto temp; temp.x = x; temp.y = y; return temp; }
... struct ponto Origem = constroiPonto(0,0);
struct ponto origem = {0,0}; ... struct ponto trapezio[] = { { 5,5}, {5, 10}, {10,5}, {10,13} }; ...
preciso armazenar esse endereo retornado pela malloc num ponteiro de tipo apropriado Para alocar um tipo de dado que ocupa vrios bytes, preciso recorrer ao operador sizeof, que diz quantos bytes o tipo especificado tem
DATA *d; d = malloc (sizeof (DATA)); d->dia = 31; d->mes = 12; d->ano = 2008;
#include <stdio.h> typedef struct tipo_data{ int dia, mes, ano; } DATA; int main (void) { DATA *d; d = malloc (sizeof (DATA)); d->dia = 31; d->mes = 12; d->ano = 2008; printf("Data: %d / %d / %d \n", d->dia, d->mes, d->ano); free(d); return 0; }