就嵌套函数而言,我无法理解输入和输出的内容
unsigned long int(*hash)(char *);
是...
这个嵌套函数是否接受一个字符串并输出一个指向unsigned long int?
谢谢!
struct hash_table {
unsigned long int(*hash)(char *);
unsigned int n_buckets;
sll **buckets; /* an array of pointers to string lists */
};
答案 0 :(得分:1)
答案 1 :(得分:0)
结构中的hash
成员不是嵌套函数,它是函数指针。
函数指针只是指向函数的指针(顾名思义)。由于您在C语言中所做的一切就是调用它们或获取它们的地址,因此您永远不需要为函数本身分配内存。
您可以使用合适函数的地址对其进行初始化,该函数可能如下所示:
static unsigned long int my_hash(char *s)
{
return (unsigned long int) *s; /* Very bad hashing! */
}
然后在其他地方:
struct hash_table ht;
ht.hash = my_hash;
请注意,&
(地址)运算符不是必需的,因为名称my_hash
后面没有括号,函数名称的计算结果为地址。