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;
}
}