Академический Документы
Профессиональный Документы
Культура Документы
Computadores
Aula 7 e 8
13 e 20/09/2012
Profª Ms. Engª Elaine Cecília Gatto
Unidade 6: Estruturas, Uniões, Enumerações e Tipos
Definidos pelo Usuário
Curso de Bacharelado em Engenharia de Computação
Universidade do Sagrado Coração – USC
Bauru/SP
Estruturas: conceito/definição
• São coleções de variáveis relacionadas agrupadas sob um
único nome.
• Podem conter variáveis de muitos tipos de dados diferentes.
• São usadas para declarar registros a serem armazenados em
arquivo.
• Estruturas de dados mais complexas: listas, filas, pilhas e
árvores.
• Ponteiros e estruturas facilitam a formação dessas estruturas.
• Tipos de dados derivados (e não primitivos)
Declarações de Estruturas
• Declaração de uma estrutura:
struct card {
char * face;
char *suit;
};
struct funcionario {
char nome[20];
char sobrenome[20];
int idade;
char sexo;
double salario;
};
Estrutura Autorreferenciada
• É uma estrutura que contém um membro que é um ponteiro
para o mesmo tipo de estrutura. São usadas para criar listas
interligadas. Exemplo:
struct funcionario2 {
char nome[20];
char sobrenome[20];
int idade;
char sexo;
double salario;
struct funcionario2 *ePtr; //estrutura autorreferenciada
}
Declarações de variáveis de
tipos de estrutura
• Declarações de estruturas não criam espaço na memória;
• Declarações de estruturas criam um novo tipo de dado;
• Esse novo tipo de dado é usado para declarar variáveis que então
ocupam espaço na memória;
• Exemplo:
• NÃO PODEMOS:
• Comparar estruturas usando == e !=
Inicialização de estruturas
• Parecido com vetores e matrizes. Exemplo:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct {
char *face;
char *suit;
} Card;
TYPEDEF
• A declaração anterior cria o tipo de estrutura Card sem a
necessidade de uma instrução typedef separada. Agora Card
pode ser usado para declarar variáveis do tipo struct card.
Card deck[52];
struct aluno {
int nmat; //número da matrícula
float nota[3]; //notas
float media; //média
};
Exemplo 1
int main () {
struct Aluno Jose; //declara uma variável do tipo struct
Jose.nmat = 456;
Jose.nota[0] = 7.5;
Jose.nota[1] = 5.2;
Jose.nota[2] = 8.4;
Jose.media = (Jose.nota[0] + Jose.nota[1] + Jose.nota[2])
/ 3.0;
printf(“Matrícula: %d \n ”, Jose.nmat);
printf(“Média: %2f \n ”, Jose.media);
system(“Pause”);
return 0;
}
Exemplo 2
/* estruturas aninhadas */
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int dia;
char mes[10];
int ano;
} Data;
typedef struct {
int pecas;
float preço
Data diavenda;
} Venda;
Exemplo 2
int main () {
static Venda A = {20, 110.0, {7, “novembro”, 2001}};
printf(“Peças: %d \n”, A.pecas);
printf(“Preço: %d \n”, A.preco);
printf(“Data: %d de %s de %d
\n”, A.diavenda.dia, A.diavenda.mes, A.diavenda.ano);
system(“PAUSE”);
return 0;
}
Exemplo 3
/* Mostra a passagem de estruturas para funções por valor.
Mostra uma função que retorna uma estrutura */
#include <stdio.h>
#include <stdlib.h>