PUNTEROS EN C

Dani
03 de Diciembre del 2002
Hola. Tengo que implementar una estructura tipo VECTOR en C y me encuentro con un problema al manejar punteros. Utilizo varios punteros a void y necesito incrementar la posición de dichos punteros en un tamaño que se corresponde con el tamaño de los elementos del vector. El problema es que al ser los punteros void me da un error de compilación al escribir: inicioVector=inicioVector+tamElemento
siendo inicioVector un puntero a void:
void *inicioVector
y tamElemento una variable de tipo size_t.
El error dice que el tamaño del tipo es desconocido o cero, refiriéndose a inicioVector.
He probado a escribir inicioVector=&inicioVector+tamElemento y entonces si compila, pero creo que no es correcto pq en este caso estoy incrementando la dirección de memoria donde se encuentra el puntero y no la dirección de memoria a la que apunta el puntero. ¿Podría alguien decirme si estoy en lo cierto y como resolver esto? Muchas gracias.

webJose
03 de Diciembre del 2002
Y por qué no hace esto:

inicioVector += sizeof(size_t);

Eso, si el vector es un vector de tipo size_t.

Otra podría ser hacer casting a otro puntero del tipo apropiado.

Dani
03 de Diciembre del 2002
Después de mucho probar he hallado una solución.
inicioVector=(size_t *)inicioVector+(tamElemento/2)

Lo único que se la razón por la que al añadir al puntero tamElemento me suma el doble de posiciones de memoria del valor de tamElemento. Así por ejemplo si inicioVector apunta a la dirección DS:09BA y sumo tamElemento que se corresponde con un int (tamaño 2 bytes) pues la dirección resultante es DS:09BE y no DS:09BC que es la que busco. Lo he solucionado dividiendo por 2, pero no pq pasa esto. ¿Hay alguien que sepa un poco de esto?