UNIPLI
Linguagem de Programação I
Professora Simoni Rangel de Freitas Oliveira
Estruturas e tipos definidos pelo usuário
1. Estruturas
Uma estrutura é um conjunto de variáveis de tipos distintos ou não, agrupadas sob um
único nome. As variáveis que compõem a estrutura são chamadas membros, campos
ou elementos.
Exemplos:
1. Uma estrutura data composta por três elementos: dia, mês e ano.
struct data
{
int dia;
int mes;
int ano;
};
2. Uma estrutura aluno composta por dois elementos: nome e matrícula.
struct aluno
{
char nome[80];
int matricula;
};
Declaração de uma estrutura
Sintaxe:
struct <identificador>
{
tipo membro1;
tipo membro2;
...
tipo membroN;
};
•
•
•
•
Com a palavra-chave struct declara-se um novo tipo de dado.
A palavra seguinte será o seu identificador.
Os membros são declarados entre chaves.
A declaração termina com um “ponto e vírgula” (;).
No momento da declaração da estrutura:
• Não há alocação de espaço de memória.
• É definido um modelo de como estruturas do tipo identificador, devem ser
construídos.
• Os membros não podem ser inicializados.
1
UNIPLI
Linguagem de Programação I
Professora Simoni Rangel de Freitas Oliveira
Após ter sido declarado o novo tipo existe e pode ser utilizado para criar variáveis que
irão armazenar os valores.
Sintaxe para a declaração das variáveis:
struct <identificador> <lista de variáveis>;
Exemplos:
struct data hoje;
• Declaração de uma variável, ou uma estrutura, do tipo data.
• É alocado espaço para armazenar os dados de hoje.
struct aluno Joana, Marilena, Marcelo;
• Declaração de três variáveis, ou três estruturas, do tipo aluno
• É alocado espaço para armazenar os dados dos três alunos: Joana, Marilena
e Marcelo.
É possível declarar simultaneamente o modelo da estrutura e as variáveis do tipo
estrutura.
Exemplos:
struct data{
int dia;
int mes;
int ano;
}hoje;
struct aluno{
char nome[80];
int matricula;
}Joana, Marilena, Marcelo;
Inicialização de estruturas
A inicialização de estruturas é semelhante à inicialização de um arranjo.
Exemplos:
1.
struct funcionario
{
char nome[50];
double salario;
} x, y, z;
struct funcionario x = {“Amanda da Silva”, 370.00};
struct funcionario y = {“Marcelo de Souza Junior”, 450.00};
struct funcionario z = {“Roberto dos Santos”, 1530.00};
2
UNIPLI
Linguagem de Programação I
Professora Simoni Rangel de Freitas Oliveira
2.
struct data{
int dia;
int mes;
int ano;
}hoje;
struct data hoje={13,11,2006};
Os valores para cada um dos membros são escritos entre chaves e separados por
vírgula, na ordem em que foram declarados.
Acesso aos elementos de uma estrutura
Os elementos de uma estrutura podem ser acessados através do operador de acesso
“ponto” (.). Esse operador conecta o nome de uma variável estrutura a um membro
desta.
Exemplos:
1. struct funcionario{
char nome[50];
double salario;
} x, y, z;
// esturura x
strcpy(x.nome,”Amanda da Silva”);
x.salario=370.00
//estrutura y
gets(y.nome);
scanf(“%lf”, &y.salario);
//estrutura z
z=x; //atrituição de todos os campos de x para z;
• Só é possível atribuir o conteúdo de uma estrutura a outra estrutura do
mesmo tipo.
2. Estrutura com outras estruturas como membros.
struct aluno
{
char nome[80];
int matricula;
struct data nascimento;
}fulano;
gets(fulano.nome);
scanf(“%d”, &fulano.matricula);
scanf(“%d”, &fulano.nascimento.dia);
scanf(“%d”, &fulano.nascimento.mes);
scanf(“%d”, &fulano.nascimento.ano);
3
UNIPLI
Linguagem de Programação I
Professora Simoni Rangel de Freitas Oliveira
3. Vetores de estruturas
Vetores de estruturas são vetores onde os elementos são estruturas. Deste modo, o
acesso a um vetor de estruturas é feito colocando-se o índice entre colchetes, logo
após o nome do vetor seguido pelo operador ponto.
A inicialização pode ser feita delimitando-se o conteúdo do vetor entre um par de
chaves, assim como o conteúdo a ser atribuído a cada posição do vetor. O valor para
cada um dos membros deve respeitar a ordem de declaração, separados por vírgula.
Exemplo:
#include <stdio.h>
#define TAM_VET 4
void main(){
// declaracao do modelo data
struct data{
int dia, mes, ano;
};
// declaracao do modelo funcionario
struct funcionario{
char nome[50];
double salario;
struct data nascimento;
};
// declaração da variável i
int i;
// declaracao e inicialização do vetor de estruturas vet
struct funcionario vet[TAM_VET]={
{"Adriana Martins", 350.00, {10,5,1982} },
{"Luciano Araujo de Lima", 540.00, {23,8,1983} },
{"Marcos Paulo da Silva", 3625.00, {14,1,1981} },
{"Jonathas Martins dos Santos",2368.00, {2,10,1983} }
};
puts("Imprimindo os dados.\n");
for(i=0; i<4; i++){
puts(vet[i].nome);
printf("Salario: %.2lf", vet[i].salario);
printf("\n%d/%d/%d\n\n", vet[i].nascimento.dia,
vet[i].nascimento.mes,
vet[i].nascimento.ano );
}
}
Bibliografia
HICKSON, Rosângela. Aprenda a programar em C, C++ e C#. Ed. Campus, 2002.
GOTTFRIED, B. S. Programando em C. Editora LTC, 1993.
KERNIGHAN, B. W., RITCHIE, D. M. C: A linguagem de programação – Padrão ANSI.
Ed. Campus, 1989.
4