Ir ao conteúdo
  • Cadastre-se
Poisoned00

C manipulação de ponteiro void

Recommended Posts

Dale galera , to com um problema aqui meio cabeludo..
O exercício é o seguinte.. criar um ponteiro void que vai armazenar quantidade x de usuários , nome e idade..
Porém minha dúvida é o seguinte.. como eu vou utilizar o ponteiro void e fazer ele armazenar as informações corretamente ?
Eu tentei fazer ele armazenar os valores de forma adjacente , porém depois desse teste


void Buffer(){

	void *pBuffer;
	
	printf("\n%d",pBuffer);
	
	pBuffer = malloc(sizeof(int));
	printf("\nmalloc-int>%d",pBuffer);

	pBuffer += sizeof(int);
	printf("\npulo-4>%d",pBuffer);
	
	pBuffer = malloc(20*sizeof(char));
	printf("\nmalloc-char>%d",pBuffer);

	pBuffer += 20*sizeof(char);
	printf("\npulo-20>%d",pBuffer);
	
	pBuffer = malloc(sizeof(int));
	printf("\nmalloc-int>%d",pBuffer);
}

eu percebi que ele não armazena de forma adjacente.. ou seja as posições de memória que saem no escape %d não são adjacentes ... então eu não conseguiria acessar os valores seguindo essa lógica.. 

Não tenho ideia de como fazer isso agora.. :/ 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá! Apresente-nos na integra a descrição do problema para que assim

passamos entender melhor o exemplo com você nos deu.

 

 

5 horas atrás, Poisoned00 disse:

eu percebi que ele não armazena de forma adjacente.. ou seja as posições de memória que saem no escape %d não são adjacentes ... então eu não conseguiria acessar os valores seguindo essa lógica.. 

E nem poderia ser. Porque o valor de incremento possui razões acima de 1. 

Observe:

 

int main(void){

    // := sinal um outro nome para ...
	void *pBuffer =  NULL;             // = 0
	printf("pBuffer : %u\n", pBuffer); // pBuffer:= 0
	
	pBuffer =  malloc(sizeof(int));    // = x
	printf("pBuffer : %u\n", pBuffer); // pBuffer:= x

	pBuffer +=  sizeof(int);           // = x + [sizeof(int):= 4]
	printf("pBuffer : %u\n", pBuffer); // pBuffer:= (x + 4)
    return 0;}

O.k.

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





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×