[Prévia cron] [Próxima Cron] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
[Índice de autor]
Re: vetores no struct
Rogério:
>Como que eu uso vetores em struct? Posso colocar sigla[6], como um
parâmetro do struct? Ou apontador para fazer alocação dinâmica? Nesse caso,
como que eu "abro" o struct em suas partes (p. ex. disciplina.sigla[1])?
Você pode usar os dois approaches. É perfeitamente legal declarar um
vetor estático (com dimensões conhecidas no compile-time) dentro de uma
estrutura (aliás, assim como qualquer outro tipo). Você também pode colocar
um pointer, e alocar o vetor dinamicamente. Acho que as principais vantagens
e desvantagens de cada um são:
vetor/matriz estático: mais fácil de implementar, mas tem tamanho limitado,
e cada instância da struct vai ser enorme, isto é, do tamanho total de seus
componentes (incluindo os vetores).
vetor/matriz dinâmico: você tem de alocar e desalocar a memória manualmente,
mas em compensação é a forma mais eficiente, com menor desperdício de
memória. Dá mais trabalho.
Quanto à forma de usar, é o que você falou mesmo:
struct {
int Vetor1[50];
int *Vetor2;
} teste;
teste.Vetor1[0] = 5;
teste.Vetor2 = (int*) malloc(50*sizeof(int));
if (teste.Vetor2) {
teste.Vetor2[0] = 5;
free(teste.Vetor2);
}
Rubens