好吧这是我讲师提供的哈希程序的功能之一。它有很多我以前从未尝试过的命令,比如strdup,hash等。从我的角度来看,这个功能用于在主程序中将列添加到散列(散列就像表正确吗?)那里重复使用此函数5次,因为有5个表描述...所以这里' s功能:
int install (char *name, char *desc){
unsigned int hi;
node *np;
if((np=lookup(name))==NULL){
hi=hash(name);
np=(node*)malloc(sizeof(node));
if (np==NULL){
return 0;
}
np ->name = m_strdup(name);
if (np->name == NULL){
return 0;
}
np -> next=hashtab[hi];
hashtab[hi]=np;
}
else{
free (np->desc);
}
np -> desc=m_strdup(desc);
if (np->desc == NULL){
return 0;
}
return 1;
}
为什么会有这么多的回报?如果函数返回0,则表示函数没有成功地执行它应该正确的操作?如果它已经返回0,那么该函数是否有可能返回1?好吧,我完全没有这个...谢谢你的帮助:D
答案 0 :(得分:0)
如果出现错误,写入的函数将返回0,否则返回1。这是一个相当普遍的但绝不是普遍的习语。
关于多个return语句,只有其中一个将被执行以执行对该函数的特定调用,因为返回的作用是停止执行当前函数并返回(即 return )给调用者。对同一函数的不同调用可以在代码中采用不同的路径,因此命中不同的返回语句,但任何单个调用只会返回一个返回。
在方法中使用多个return语句是一个经常争论的样式问题。它可以说使代码更简单,更难阅读,具体取决于它是如何完成的。见this question& this question对此有一些看法。