結構體指針作爲函數參數傳遞卻無法傳值的有關問題

今天做C++作業遇到一個問題,需要寫一個函數(在鏈表中添加新的節點)將結構體指針作爲形參,結果發現傳遞之後無法改變結構體的值,鏈表的長度還是沒變。通過查詢資料,發現把形參改爲對結構體指針的應用即可解決問題。

原代碼:

struct Tnode
{
    string word;
    int counts;
    Tnode* left;
    Tnode* right;
};

void insert_Tnode(struct Tnode *L,string str,int numbers)
{
    struct Tnode *newd = new Tnode;//建立新節點
    if(newd == NULL)
        exit(1);
    newd->word = str;
    newd->counts = numbers;
    L->right = newd;
    newd->left = L;
    newd->right = NULL;

    L = newd;
}

運行後發現原來傳進來的L鏈表並沒有變化,對代碼進行修改如下即可。

將函數的聲明進行修改爲:

void insert_Tnode(struct Tnode *&L,string str,int numbers)

參考資料:http://bbs.csdn.net/topics/70168422


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