指標和引用作為引數的不同(一)

2022-06-25 17:48:11 字數 1053 閱讀 9072

總的來說,在以下情況下你應該使用指標:

一是你考慮到存在不指向任何物件的可能(在這種情況下,你能夠設定指標為空),

二是你需要能夠在不同的時刻指向不同的物件(在這種情況下,你能改變指標的指向)。

如果總是指向乙個物件並且一旦指向乙個物件後就不會改變指向,那麼你應該使用引用。

———————摘自《more_effective c++》

先貼一下**,這裡只貼了一部分

在二叉樹相關的程式設計中,對leftchild 或者rightchild的指向進行修改是很常見的,今天遇到了乙個小坑

class rbtree

void rbtree::insert(int key,node * root)

}

會有什麼問題呢,在insert後,m_root 仍然為空這是為什麼呢?

rbtree  test1;

test1.insert(5, test1.m_root);

舉個例子

int c;

int d;

int *a=&c;

swap (a, b)

a指標指向整型 c

a指標的值是c變數的位址。

你可以通過a指標修改b的值。但是你要想讓a指標指向d,你就得修改a指標的值。

但是指標作為引數傳到函式的時候,是不能修改原來的值的

那麼這個時候,就應該傳的是a指標的引用

所以,上面那段**

應該改成

void insert(int key,node * &root);
這樣才能對root的指向進行修改

總結一下, 對指標指向的東西的修改, 和對指標本身的修改是不同的

如果要對指標的指向進行修改,就要用指向指標本身的指標進行修改 或者 用指標本身的引用 修改

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

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

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

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

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

我們都知道c 中的引數傳遞是值傳遞,想要通過函式修改形參,一般使用指標或者引用。那麼有時候我們對於傳入的指標位址希望做修改怎麼辦呢?今天在寫乙個樹結構的題時碰到這個問題 大概 是 void insert array treenode node,int array,int left,int right...