我在这里浏览这本书(掌握C中的算法),寻找图形实现。但是他用了一些我不熟悉的符号。这不是很明显,我试图找出他是否在书的某个地方解释过,但我没有。
定义Graph类型时,其中一个结构成员是
int (*match) (const void *key1, const void *key2);
好,这里我们有两个要比较的泛型值?为什么在结构体内部?其他地方没有出现的*match function
在哪里?
他在单链表中一直使用这种声明,但我找不到任何解释。
*destroy
或多或少是同一种函数?我发现他在说这样会释放结构体的内存。但是,为什么在这里?
这感觉像是一个非常基本和明显的问题,但是我在任何地方都找不到答案,而且我真的没有人可以问。
这就是如何定义指向方法的指针。所以这个结构体有一个变量匹配,它应该得到一个值,一个方法得到2const void *
。
int matchGraphMyWay(const void *key1, const void *key2){
...
}
int main(){
// Graph g = ...
g.match = &matchGraphMyWay; // Assign value to the match function.
g.match(...) // Execute the match function
}