C中的函数指针有或没有*有区别吗?
我的函数指针声明是这样的
typedef void (*DListVisitNode) (Node*, void*);
void DListTraverse( NodeList* , DListVisitNode , void*);
我有这样的代码
void print_index( Node* node, void* ctx)
{
printf("index:%d\n", node->index);
}
void* print_content( Node* node, void* ctx)
{
printf("content:%s\n", node->content);
}
void DListTraverse(NodeList* nodelist, DListVisitNode visit_func, void* ctx)
{
Node* cur_node = nodelist->headnode;
while( cur_node != NULL)
{
visit_func( cur_node, ctx );
cur_node = cur_node->nextnode;
}
}
DListTraverse( nodelist, print_content, NULL );
DListTraverse( nodelist, print_index, NULL );
DListTraverse 都有效,但带有 * 的会抛出这样的警告
warning: passing argument 2 of ‘DListTraverse’ from incompatible pointer type
我会简单地删除 * 之后,但它们之间有什么区别?