C++传参数的时关于引用和传值

在数据结构设计中,经常会在已有的数据结构上进行修改,在初学者学习的时候常常会发现创建的数据结构不听指挥,在调试时发现明明设置了关键字的值,但是在另一个函数中调用的时候则无法调用,比如下面l两段不同的代码.

 


void insert(Tree tree, node * t)

    if (tree.empty){

       tree.empty = false;

       tree.root  = t;  

       return ;

    } 

 

    //node * parent = tree.root;

    int flag = 1;

    node * temp = tree.root;

    while ( temp && flag){

          if (temp->key > t->key)

             if (temp->left)

                temp = temp->left;       

             else

                flag = 0;

          else

             if (temp->right)

                temp = temp->right;       

             else 

                flag = 0;

 

    }

    if (temp->key > t->key){

       temp->left = t;

       t->parent = temp;

    }

    else {

       temp->right = t;

       t->parent = temp;

    }

    //printf(" %d key/n",t->key );

    return ;

}

 

 

 

void insert(Tree tree, node * t)

    if (tree.empty){

       tree.empty = false;

       tree.root  = t;  

       return ;

    } 

 

    //node * parent = tree.root;

    int flag = 1;

    node * temp = tree.root;

    while ( temp && flag){

          if (temp->key > t->key)

             if (temp->left)

                temp = temp->left;       

             else

                flag = 0;

          else

             if (temp->right)

                temp = temp->right;       

             else 

                flag = 0;

 

    }

    if (temp->key > t->key){

       temp->left = t;

       t->parent = temp;

    }

    else {

       temp->right = t;

       t->parent = temp;

    }

    //printf(" %d key/n",t->key );

    return ;

}

 

 

 


 

注意黄色的两行,如果选择传值的模式(也就是后者),调用这个函数中的原始Tree 是不会改变的, 但是如果使用引用可以实现这个功能.

以后在设计数据结构的时候要注意.

其次引用使用地址实现的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值