EP08

EP08

por Rogério Marcos Fernandes Neto -
Número de respostas: 1

Olá, professor e colegas!!

Eu, particularmente, estou sentindo certa dificuldade em entender como as coisas  "mais ou menos genéricas" são construídas em C. Alguém tem algum link com algum código exemplo bem explicado, ou algum tutorial de como usar o tipo void* corretamente? Desde já agradeço.

Até mais.

Em resposta à Rogério Marcos Fernandes Neto

Re: EP08

por José Coelho de Pina -

Oi Rogério,

...estou sentindo certa dificuldade em entender como as coisas  "mais ou menos genéricas" são construídas em C.

Relaxe.
Não há nada profundo no que eu quis dizer.

O genérico foi dizer que, do ponto de visita da ST, o tipo da chave e o tipo valor não importa.
O cliente deve passar a função de comparação para a ST comparar as chaves.
O mais eu menos foi só para chamar a atenção que a ST só pode clonar/cópiar chaves e valores de algum tipo fazendo:

   /* o include abaixo já está no arquivo binarysearchst.c */
   #include <string.h>  /* memcpy() */

   /* alocamos espaço para o clone/copia */
   void *clone = emalloc(nObj);

   /* copiamos nObj bytes a partir da posição apontada por obj para a posição
    * apontada por clone */
   memcpy(clone, obj, nObj);

No código, obj faz o papel de um ponteiro para uma chave ou valor e nObj é o seu número de byte.
O código acima só clona obj se ele ocupar nObj bytes consecutivos na memória.
Isso server para clonar vetores, inteiros, structs que não tem algum campo que seja um ponteiro.