我正在尝试实现一个哈希表,一切都很好,直到我在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.
}
答案 0 :(得分:3)
idx
是Index**
,因此&idx
是指向Index**
的指针(也就是Index***
)。
您应该传递idx
而不是&idx
。