Buscar

Tipos de Dados em C: typedef e estruturas

Prévia do material em texto

ESTRUTURAS E NOVOS 
TIPOS EM C
Algoritmos e Programação II
Profa. Fernanda De Nardin Walker
Typedef
 A linguagem C permite que o programador defina 
novos nomes aos tipos de dados existentes ou 
mesmo novos tipos de dados. 
 Isso é possível através da palavra-reservada 
typedef
 typedef tipo nome;
 Isso é particularmente interessante quando usamos 
estruturas
 podemos criar um novo tipo para definir a estrutura e
 depois declarar variáveis desse tipo (inclusive vetores).
Typedef com Struct
typedef struct Alunos
{
//código da
//struct
} Aluno;
Aluno joao, maria;
 Esse código faz com 
que possamos chamar 
"struct Alunos" apenas 
por 'Aluno'. 
 'Aluno' não é uma 
variável do tipo struct, 
é apenas um atalho, 
uma maneira mais 
simples de dizer 'struct
Alunos'.
Mais simples...
typedef struct
{
//código da
//struct
} Alunos;
 Agora a podemos definir structs desse tipo apenas 
usando a palavra 'Alunos'. E até um vetor:
Alunos turma[22];
Exemplo
struct Livro
{
char nome[30];
char autor[50];
int paginas;
double preco;
}
struct Livro L1;
typedef struct Livro
{
char nome[30];
char autor[50];
int paginas;
double preco;
} TIPO_LIVRO;
 TIPO_LIVRO L1;
Passagem de Parâmetros
main( )
{
TIPO_LIVRO L1;
......
F1(L1);
.....
}
Por valor:
void F1(TIPO_LIVRO L)
{
printf(“%s”, L.nome);
printf(“%s”, L.autor);
printf(“%d”, L.paginas);
printf(“%lf”, L.preco);
}
Passagem de Parâmetros
main( )
{
TIPO_LIVRO L1;
......
F2(&L1);
.....
}
Por referência:
void F2(TIPO_LIVRO *L)
{
(*L).nome=......;
(*L).autor=......;
(*L).paginas=xxxx;
(*L).preco=xxxxx;
}
Passagem de Parâmetros
main( )
{
TIPO_LIVRO L1;
......
F2(&L1);
.....
}
Por referência:
void F2(TIPO_LIVRO *L)
{
L→nome=......;
L→autor=......;
L→paginas=xxxx;
L→preco=xxxxx;
}
Vetor de estruturas
 A partir disso, fica simples 
declarar um vetor de 
estrutura:
 Exemplo:
TIPO_LIVRO Livraria[80];
 E para acessar os 
elementos do vetor, 
usamos, por exemplo:
for(i=0;i<80;i++)
{
Livraria[i].nome...
Livraria[i].autor...
Livraria[i].paginas...
Livraria[i].preco...
}
Estruturas aninhadas
 Também podemos criar 
uma estrutura que 
contenha outra 
estrutura, assim:
typedef struct
{
int dia;
int mes;
int ano;
} data;
 E usar na outra estrutura 
como:
typedef struct Livro
{
char nome[30];
char autor[50];
int paginas;
double preco;
data datacompra;
} TIPO_LIVRO;