Помимо проблемы приведения (которая вам не нужна, как указано выше), есть еще несколько запутанных вещей, которые могут пойти не так с кодом.
если hash()
должен возвращать индекс для массива, он также должен возвращать size_t
. Поскольку это не так, вы можете получить странные эффекты, когда key_index
больше, чем INT_MAX
.
Я бы сказал, что size
, hash()
, key_index
должны быть одного типа, наверняка size_t
, чтобы быть уверенным, например:
size_t hash(void * key) {
//...
}
int main (int argc, char * argv[]) {
size_t size = 10;
void * items[size];
//...
void * key = ...;
size_t key_index = hash(key) % size;
void * item = items[key_index];
}