EP08

Re: EP08

por José Coelho de Pina -
Número de respostas: 0

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.