Брось это
typedef entrada *tabla_cerrada;
и просто сделай
void inicializar_cerrada(entrada *diccionario, int tam) {
int i;
for (i = 0; i < tam; i++) {
printf("%d\n", i);
diccionario[i].ocupada = 0;
}
}
int main(void) {
entrada * d = malloc(TAM * sizeof(entrada));
inicializar_cerrada(d, TAM);
}
или даже заставка:
void inicializar_cerrada(entrada *diccionario, size_t tam) {
for (size_t i = 0; i < tam; ++i) {
printf("%zu\n", i);
diccionario[i].ocupada = 0;
}
}
int main(void) {
entrada * d = malloc(TAM * sizeof *d);
inicializar_cerrada(d, TAM);
}
Если вы вынуждены использовать
typedef entrada *tabla_cerrada;
сделать
void inicializar_cerrada(tabla_cerrada diccionario, size_t tam) {
for (size_t i = 0; i < tam; ++i) {
printf("%zu\n", i);
diccionario[i].ocupada = 0;
}
}
int main(void) {
tabla_cerrada d = malloc(TAM * sizeof *d);
inicializar_cerrada(d, TAM);
}
Тем не менее tabla_cerrada
это не "таблица" (она же массив), а указатель. Как я уже сказал, не путайте себя.