Ir para conteúdo
dsgaldino

Array de Struct

Recommended Posts

Boa tarde, gostaria de saber como faço pra montar uma lista de struct sem tamanho.

typedef struct
{
char marca[30];//Característica Principal
float preco;
int velocidade_Maxima;
char tipo[15];
int peso_Maximo;
int largura;
int perfil;
int aro;
int numero_Registro;
}Pneu;

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 22/07/2016 at 19:25, _Isis_ disse:

Utilize alocação dinâmica.

 

Exatamente. Com a alocação dinâmica de memória você pode criar uma lista com quantos elementos do tipo Pneu você quiser dentro do limite da memória RAM do seu computador.

 

Pneu *ptr;
ptr=malloc(sizeof(Pneu));

 

O programa dessa forma cria espaço na memória para armazenar 1 elemento do tipo Pneu por que a função sizeof retorna quantos bytes possui o tipo que está dentro dos parênteses da função e a função malloc manda o programa reservar na memória aquela quantidade de bytes e essa região reservada da memória será apontada pelo ponteiro ptr para o programa saber aonde ela se localiza.

 

Agora o ponteiro ptr está apontando para o primeiro elemento do tipo Pneu da sua lista. 

 

Você pode avançar uma posição adiante na lista de elementos Pneu com o seguinte:

 

ptr++;

 

ptr[0] é o primeiro elemento da sua lista. ptr[1] vai ser o segundo e assim por diante. Isso é assim mesmo que a sua lista não possua um segundo elemento como é o caso aqui. Se quisermos ter um segundo elemento devemos reservar espaço para ele na memória usando a função malloc novamente após ele ter sido incrementado:

 

ptr = malloc(sizeof(Pneu));

 

Pronto. Sua lista já possui um segundo elemento e seus dados podem ser alterados das seguintes formas:

 

ptr[0].peso_Maximo=2000;

 

Ou então:

 

ptr[1].preco=255.50;

 

Quando quiser adicionar um novo elemento Pneu à lista é só avançar o ponteiro incrementando ele em 1 e usar a função malloc.

Dessa forma você pode criar uma lista de struct Pneu do tamanho que quiser sendo limitado somente pela quantidade de memória do seu computador.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.