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 是不会改变的, 但是如果使用引用可以实现这个功能.

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

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

发布了24 篇原创文章 · 获赞 1 · 访问量 7856
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章