LusoRobótica - Robótica em Português

Robótica => Discussão geral sobre robótica => Tópico iniciado por: LuísR.A. em 05 de Outubro de 2014, 23:03

Título: Duvida basica, em C ha cast automatico?
Enviado por: LuísR.A. em 05 de Outubro de 2014, 23:03
Ora boas pessoal :D

Tenho uma pequena duvida que agora não consigo me lembrar nem encontrar.
Quero fazer uma alocalização dinamica de dados mas em C, com malloc. Se eu quiser aceder ao 2º elemento como faço? Ex:

uint32_t *valor = malloc(10*sizeof(uint32_t));

agora faço
*(valor+1) ou *(valor+1*(sizeof(uint32_t))); ?
Título: Re: Duvida basica, em C ha cast automatico?
Enviado por: StarRider em 05 de Outubro de 2014, 23:12
Ora boas pessoal :D

Tenho uma pequena duvida que agora não consigo me lembrar nem encontrar.
Quero fazer uma alocalização dinamica de dados mas em C, com malloc. Se eu quiser aceder ao 2º elemento como faço? Ex:

uint32_t *valor = malloc(10*sizeof(uint32_t));

agora faço
*(valor+1) ou *(valor+1*(sizeof(uint32_t))); ?

Boas,

A var "valor" é um ponteiro para uint32_t logo o compilador calcula automaticamente o
offset necessário, por exemplo, podes indexar como se fosse um array : valor[0] ... valor[9],
ou podes incrementar (++) ou adicionar (+n) o ponteiro em si e de-referenciar o conteúdo
normalmente. Usa *(valor+1) ou valor[1].

Abraços,
PA
Título: Re: Duvida basica, em C ha cast automatico?
Enviado por: LuísR.A. em 05 de Outubro de 2014, 23:26
Obrigado  ;D
Nunca me lembro disto.
Título: Re: Duvida basica, em C ha cast automatico?
Enviado por: jm_araujo em 06 de Outubro de 2014, 09:51
Apesar de poderes fazer de várias maneiras, recomenda-se usar "valor[1]" para tornar o código mais legível.
Título: Re: Duvida basica, em C ha cast automatico?
Enviado por: LuísR.A. em 06 de Outubro de 2014, 09:55
concordo