C 用于填充哈希表的函数

C 用于填充哈希表的函数,c,hashtable,C,Hashtable,对于家庭作业,我必须创建一个没有参数的函数,以便用NULL填充哈希表。 这是表的声明(我不能更改它),以及我如何调用函数 #include <stdio.h> #include <stdlib.h> #define MAX 10 int main() { char* htab[MAX]; htab = mkempty(); } 我理解这个错误,但我不知道如何填写这个表格 声明必须是:char*htab[MAX],函数没有任何参数。给定表格: char* hta

对于家庭作业,我必须创建一个没有参数的函数,以便用
NULL
填充哈希表。 这是表的声明(我不能更改它),以及我如何调用函数

#include <stdio.h>
#include <stdlib.h>
#define MAX 10

int main()
{
  char* htab[MAX];
  htab = mkempty();
}
我理解这个错误,但我不知道如何填写这个表格

声明必须是:
char*htab[MAX],函数没有任何参数。

给定表格:

char* htab[MAX];
将其全部设置为NULL的最佳方法是:

memset(htab, 0, sizeof(htab));
如果需要在函数内执行此操作,则函数必须将数组作为指针加上大小:

void mkempty(char** array, size_t count)
{
    memset(array, 0, count * sizeof(char*));
}
这就是所谓的:

mkempty(htab, MAX);

现在,有些人会告诉您,将指针“归零”并不一定会使其为空。这些踏板是正确的:上面使用的
memset()
在技术上依赖于某些东西,而这些东西在所有制造的机器上可能都不是100%。具体来说,它在一些20年至50年前制造的大型计算机上不起作用。我想你的作业不是在20世纪80年代的计算机上运行的。

如果你需要作业,你可以使用指针,动态分配内存。没有争论

char **mkempty(void)
{
    return calloc(MAX, sizeof(char *));
}
大体上

char **htop;
htop = mkempty();

所以我问我的老师,他不想要一个没有参数的函数,这是他给我的表格上的一个错误

因此,我的职能是:

void mkempty(char** htab[])
{
  int i=0;
  for (i=0 ; i < MAX ; i++){
    *htab[i]=NULL;
  }
}
void mkempty(字符**htab[]
{
int i=0;
对于(i=0;i
当函数返回时,您希望局部变量
集合发生什么情况?数组不是指针!在使用之前,还必须声明函数。如果您的编译器没有抱怨,请使用现代编译器,启用所有建议的警告,并将其视为错误。阅读有关指针、arrray、函数……实际上是所有的基础知识。次要缺陷:不带参数的函数应该使用
(void)
,而不是
()
。后者已过时,将在将来的版本中删除。您确定正确解释了说明吗?你能链接到原始赋值吗?函数的描述:mkempty:没有参数;创建一个空字符串集。在本练习中,字符串集是通过哈希表实现的,这里这样的表被声明为错误太多。你似乎没有对作业进行解释,或者作业有缺陷。向老师请教,这样不行。@thibox2225是
char*htab[MAX];htab=mkempty()?或者这是您自己的代码?好的,但我不能给我的函数提供参数。这就是为什么我要创建
char*employ[MAX]并将“集成”元素放入“htab”哈希表的声明必须是
char*htab[MAX]因此不能为数组变量赋值。也许你不明白什么——问问老师
char **htop;
htop = mkempty();
void mkempty(char** htab[])
{
  int i=0;
  for (i=0 ; i < MAX ; i++){
    *htab[i]=NULL;
  }
}