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");
...