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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章