estruturas
Estruturas
¥ Struct s‹o cole•›es de dados heterog•neos agrupados em uma mesma estrutura de dados ¥ Ex: armazenas as coordenadas (x,y) de um ponto:
(x, y)
Linguagem C
Ricardo Jacobi
1
Estruturas
¥ Declara•‹o:
(x, y)
struct { int x; int y;
} p1, p2;
¥ a estrutura contŽm dois inteiros, x e y
¥ p1 e p2 s‹o duas vari‡veis tipo struct contendo duas coordenadas cada.
Ricardo Jacobi
Linguagem C
Declaração
¥ Formato da declara•‹o: struct nome_da_estrutura { tipo_1 dado_1; tipo_2 dado_2;
...
tipo_n dado_n;
} lista_de_variaveis;
¥ A estrutura pode agrupar um nœmero arbitr‡rio de dados de tipos diferentes
¥ Pode-se nomear a estrutura para referencia-la
Linguagem C
Ricardo Jacobi
2
Nomeando uma Estrutura struct { int x; int y;
} p1;
• struct ponto define um novo tipo de dado
Repetição struct { int x; int y;
} p2;
struct ponto { int x; int y;
};
struct ponto p1, p2;
• Pode-se definir novas variáveis do tipo ponto
Ricardo Jacobi
Linguagem C
Estruturas
¥ acesso aos dados: struct-var.campo ¥ Ex: p1.x = 10; /*atribuição */ p2.y = 15; if (p1.x >= p2.x) &&
(p1.y >= p2.y) ...
Linguagem C
Ricardo Jacobi
3
Atribuição de Estruturas
¥ Inicializa•‹o de uma estrutura: struct ponto p1 = { 220, 110 };
¥ Atribui•‹o entre estruturas do mesmo tipo: struct ponto p1 = { 220, 110 }; struct ponto p2; p2 = p1;
/* p2.x = p1.x e p2.x = p1.y */
¥ Os campos correspondentes das estruturas s‹o automaticamente copiados do destino para a fonte
Ricardo Jacobi
Linguagem C
Atribuição de Estruturas
¥ Aten•‹o para estruturas que contenham ponteiros: struct aluno { char *nome;
} a1, a2;
int idade;
a1.nome = “Afranio”; a1.idade = 32; a2 = a1;
¥ Agora a1 e a2 apontam para o mesmo string nome: a1.nome == a2.nome == “Afranio”
Linguagem C
Ricardo Jacobi
4
Composição de Estruturas struct retangulo { struct ponto inicio; struct ponto fim;