您的位置:首页 > 其它

指针引发的一个传值和传址的问题

2010-12-30 17:25 211 查看
今天在编写程序时遇上了这个问题,记录如下。

一个二叉排序树的搜索算法:

指向指针的指针作为参数

int Search_BinaryTree(BinTree bt, KeyType key, BitNode** p, BitNode** pf)
{
//查找二叉排序树bt中关键之为key的结点,*p指向该结点,*pf指向该结点的双亲结点。
*p = bt;
*pf = 0;

while(*p != 0)
{
if(key == (*p)->elem) return 1;
if(key < (*p)->elem)
{
*pf = *p;
*p = (*p)->leftchild;
}
else
{
*pf = *p;
*p = (*p)->rightchild;
}
}

return 0;
}


稍作总结,在指针做参数传递给函数的时候:只能保留指针指向的对象改变的值。不能保留指针本身所做得修改。在需要修改指针本身的时候,需使用指向指针的指针作为参数。也便是传值与传址的差别所在。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: