我找到了一些我需要用于我的应用程序的代码,但是有两行我无法弄清楚他们究竟做了什么以及如何...请向我解释或者指导我一个链接,以便我可以阅读更多相关内容。
Dict* dcreate(hash_size size, hash_size (*hashfunc) (const char *));
这里我猜它是将一个函数作为参数传递给它的参数在下面的括号中!?
hash_size i = dict->hashfunc(key) % dict->size;
在这里,我的猜测和我的狗一样好!
hashfunc
:
static hash_size def_hashfunc(const char* key){
hash_size s = 0;
while(*key){
s += (unsigned char) *key++;
}
return s;
}
感谢。
答案 0 :(得分:3)
hash_size (*hashfunc) (const char *)
功能指针。
hashfunc
是一个指向函数的指针,该函数接收const char *
作为参数并返回类型hash_size
。
答案 1 :(得分:3)
对于第一行,您的猜测是正确的。这是一个接受两个参数的函数的头,其中一个是hash_size
类型,另一个是指向函数的指针,该函数的参数为const char*
并返回{{1} }。
在第二行中,hash_size
似乎是指向结构的指针,因此dict
调用函数dict->hashfunc(key)
,指针存储在hashfunc
中结构。最后一部分(dict
)只是模运算。
答案 2 :(得分:1)
它只传递一个函数指针作为参数。以下是应传递的函数类型的定义:
hash_size (*hashfunc) (const char *)
E.g。接收const char *
并返回hash_size
的函数。
答案 3 :(得分:1)
这是一个函数指针
hash_size (*hashfunc) (const char *)
这样dcreate()将分配一个Dict并填充其字段hashfunc,如:
Dict * dict = (Dict *) malloc(sizeof(Dict));
dict->hashfunc = hashfunc;
然后你可以调用dict-> hasfunc(const char *),它将返回hash_size。
hash_size i = dict->hashfunc(key) % dict->size;
确实如此:
hash_size i = ( dict->hashfunc(key) ) % ( dict->size ) ;