c 中指標的引用 作為引數傳遞

2021-09-30 14:15:16 字數 817 閱讀 4403

我們都知道c++中的引數傳遞是值傳遞,想要通過函式修改形參,一般使用指標或者引用。

那麼有時候我們對於傳入的指標位址希望做修改怎麼辦呢?

今天在寫乙個樹結構的題時碰到這個問題

大概**是

void insert_array(treenode *&node, int *array, int left, int right)

}node = new treenode(); //這裡如果node是指標就出錯了

node->val = min_val;

insert_array(node->left, array, left, min_index-1);

insert_array(node->right, array, min_index + 1, right);

}

主要是倒數三四行**,之前傳入的引數為treenode *node結果一直錯,後來加上引用就對了。

原因其實也簡單,就是我們把指標當作形參傳入時,傳的是位址,事實上這個位址的值也是形參。

node = new treenode();

應該相當於

treenode *newnode = new treenode();

node = newnode;

new乙個值會產生乙個新的位址,那麼就需要修改node的位址,但是我們傳入的node的位址是乙個形參,值傳遞,你在函式內修改它的位址對於傳入的位址沒有影響,這樣當然就**了。。。。所以如果需要讓這個指標的位址是可變的,應該傳入的引數是*&的形式

c 中指標與引用作為函式引數的區別

首先,函式引數的普通傳遞就不說了,這個很簡單,傳過來之後只是乙個變數的複製,不會改變原變數的 其次,引用傳遞也很明確,引用傳參是會改變引數的值的 問題就在指標傳遞,分為以下幾種 1.指標作為函式引數,如果是單純針對指標進行操作,它就相當於普通傳遞,不會改變原指標 但如果對指標進行引用傳遞,欸,它就可...

指標和引用作為函式傳遞引數

引用傳遞 void outputnumber int nnumber 設定引用型別引數 intmain intargc,char argv 指標傳遞 void outputnumber int pnumber 使用指標作為函式引數 intmain intargc,char argv 輸出結果是一樣的...

指標和指標的引用作為引數 c

指標和指標的引用作為引數 c 指標都清楚,存放變數位址的變數。那麼指標指向的資料是可以改變,而指標本身是不可以改變的。表示為 p 指標的引用,相當於指標的指標。作為引數傳遞時,這樣指標的數值是可以改變的,表示為 p fun int pa pa的數值在函式返回後不會變化 fun int pa pa的數...