我正在实现具有键/值对数据类型的哈希算法。我将字典存储为数据条目的数组。我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);