刚学数据结构,望高手指教
template <class T>
void BinaryTree<T>:: InOrder(BinTreeNode<T> * subTree, void (*visit)(BinTreeNode<T> * p))
{
if(subTree !=NULL){
InOrder(subTree->leftChild, visit);
visit (subTree);
InOrder(suvTree->rightChild, visit);
}
}
这是二叉树里的.
首先画直线那里.我给它传递的什么.这是一个函数指针.给他传递的是函数吗如max(x); 在使用我应该怎样使用???
总体上都不怎么能理解.真希望有人能从各方面给讲解 一下.谢谢
[解决办法]
是的,指向函数的指针
函数指针是这个函数的入口地址。
比如你定义了一个
void function(int x){ printf("%d",x); }
int main()
{
void (*pfunc)(int a);/*定义一个函数指针*/
pfunc = function;/*将function的地址赋给pfunc*/
pfunc(100);/*然后就可以用了*/
return 0;
}
同样
void (*visit)(BinTreeNode <T> * p)
也是定义了一个函数指针,这个指针变量的名称为visit,带有一个BinTreeNode类型的指针参数,无返回值,void
因此调用的时候
要传给InOrder函数实参,其中void (*visit)(BinTreeNode <T> * p)对应的就是事先写好的输出函数
比如
你的输出函数为
void print(BinTreeNode <T> * t){.....}
调用时就把print这个函数的指针作为参数传入了。