Pointers 结构中的指针

Pointers 结构中的指针,pointers,memory-management,linked-list,hashtable,structure,Pointers,Memory Management,Linked List,Hashtable,Structure,我试图使用我在链表结构中声明的文件指针,但我一直将其作为空值 我的结构如下: struct _hash_table { char found; struct _hash_chain *hash_chain; } struct _hash_chain { uint64_t value; FILE *fout; struct _hash_chain *next; } 及 我一直得到哈希表[I]->hash\u chain->fout=NULL,它的指针地址

我试图使用我在链表结构中声明的文件指针,但我一直将其作为空值

我的结构如下:

struct _hash_table
{
    char found;
    struct _hash_chain *hash_chain;
}

struct _hash_chain
{
    uint64_t value;
    FILE *fout;
    struct _hash_chain *next;
}

我一直得到哈希表[I]->hash\u chain->fout=NULL,它的指针地址是nil


我需要为指针动态分配内存吗?

结构哈希表哈希表[表大小]-这不会为
结构哈希链
分配内存,因为
哈希链
哈希表
中的指针变量

...
struct _hash_table hash_table[TABLE_SIZE];
for (i = 0; i < TABLE_SIZE; i++);
{
    hash_table[i].hash_chain = (struct _hash_chain *)malloc(sizeof(struct _hash_chain));
    memset(hash_table[i].hash_chain, 0, sizeof(struct _hash_chain));
}

//Then do file open for TABLE_SIZE times
//hash_table[0].hash_chain->fout = fopen("file.txt", "w");
...
。。。
结构哈希表哈希表[表大小];
对于(i=0;ifout=fopen(“file.txt”,“w”);
...

访问h_表[i]。没有动态内存分配的哈希链将导致崩溃(未定义的行为)。我希望你能照顾好下一个指针。

当然。或者使用新的关键字。我确信您确实为…hash\u chain->next分配了一些内存位置。问题:您是否将文件指针指定给…hash_chain->fout?谢谢!这解决了我的问题。我的下一个指针在插入新节点的函数中处理。
...
struct _hash_table hash_table[TABLE_SIZE];
for (i = 0; i < TABLE_SIZE; i++);
{
    hash_table[i].hash_chain = (struct _hash_chain *)malloc(sizeof(struct _hash_chain));
    memset(hash_table[i].hash_chain, 0, sizeof(struct _hash_chain));
}

//Then do file open for TABLE_SIZE times
//hash_table[0].hash_chain->fout = fopen("file.txt", "w");
...