我正在实现具有键/值对数据类型的哈希算法。我将字典存储为数据条目的数组。我malloc它,但是当我遍历刚刚在inicializar_cerrada函数上分配的元素时,在第二次迭代时出现程序段错误。

我和我的合作伙伴一直在努力解决这一问题,但问题仍然存在。

SSCCE:

#include <stdio.h>
#include <stdlib.h>

// ...

#define TAM 11

typedef struct entrada_ {
    int ocupada;
    char clave [LONGITUD_CLAVE];
    char sinonimos [LONGITUD_SINONIMOS];
} entrada;

typedef entrada *tabla_cerrada;

void inicializar_cerrada(tabla_cerrada *diccionario, int tam) {
    int i;
    for (i = 0; i < tam; i++) {
        printf("%d\n", i);
        diccionario[i]->ocupada = 0;
    }
}

int main() {
    tabla_cerrada d = malloc(TAM * sizeof(entrada));
    inicializar_cerrada(&d, TAM);
}

最佳答案

diccionario参数的函数定义中删除星号。 tabla_cerrada已经是一个指针:

void inicializar_cerrada(tabla_cerrada diccionario, int tam) {
将箭头符号更改为点符号。 diccionario[i]struct,而不是指向一个的指针:

diccionario[i].ocupada = 0;
从函数调用中删除&d类型为tabla_cerrada,它是一个指针:

inicializar_cerrada(d, TAM);

09-25 19:30