c函数指针解释

时间:2011-12-26 09:03:21

标签: c function parameters function-pointers

我找到了一些我需要用于我的应用程序的代码,但是有两行我无法弄清楚他们究竟做了什么以及如何...请向我解释或者指导我一个链接,以便我可以阅读更多相关内容。

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

感谢。

4 个答案:

答案 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 ) ; 
相关问题