C:哈希表上的指针类型不兼容

时间:2016-07-15 04:48:05

标签: c pointers warnings hashtable

我正在尝试实现一个哈希表,一切都很好,直到我在main中定义“idx”(对我来说是必须的)。现在,因为“idx”不再是全局变量,所以我必须在调用函数时将其用作参数,并且我收到以下消息:“warning:从不兼容的指针类型传递'index_createfrom'的参数3”。

在这种情况下调用函数的正确方法是什么?

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

#define SIZE_HASH_MAP 10


struct index{
    char* info;
    int line[30];
    struct index *next;
};

typedef struct index Index;


int index_createfrom(FILE* pointerToText, FILE* pointerToKey, Index **idx)
{   
    return 1;
}


int main() {

    Index* idx[SIZE_HASH_MAP] = {NULL};  

    FILE *pointerToText = fopen("text.txt", "r");
    FILE *pointerToKey = fopen("keyFile.txt", "r");

    int a = index_createfrom(pointerToText, pointerToKey, &idx); // warning here.
}

1 个答案:

答案 0 :(得分:3)

idxIndex**,因此&idx是指向Index**的指针(也就是Index***)。

您应该传递idx而不是&idx