C 中指標 與指標引用 的區別

2021-10-04 08:50:35 字數 1203 閱讀 6842

c++中*&(指標引用)與*(指標)的區別

*指標是乙個存放位址的變數,指標引用指的是這個存放位址的變數的引用。

c++中如果引數不是引用的話,會呼叫引數物件的拷貝建構函式,

所以如果有需求想改變指標所指的物件即想要改變指標變數裡存放的位址,就要使用指標引用。

下面用乙個測試例子和過程圖結合進行說明

分析:在test1中,第一步先建立了乙個物件,假設該物件的首位址是1231,則將位址1231存放在node指標變數中,並賦值該物件data屬性值為10,當呼叫changenode1(node*& pnode)時,如圖步驟二,pnode此時可以理解為node的別名,即pnode指標指向的就是node中的位址。pnode=new node;表示建立乙個新物件(假設新物件的首位址為1233),則將該新物件的首位址存放到指標pnode中,也就是指標node中。如圖步驟三,node指標和pnode指標中存放的位址均為1233了,即新物件的首位址。

分析:在test2中,第一步先建立了乙個物件,假設該物件的首位址是1231,則將位址1231存放在node指標變數中,並賦值該物件data屬性值為10,當呼叫changenode1(node* pnode)時,如圖步驟二,將node指標中存放的位址拷貝給了pnode,即pnode指標存放的也是1231。pnode=new node;表示建立乙個新物件(假設新物件的首位址為1233),則將該新物件的首位址存放到指標pnode中。如圖步驟三,node指標存放的位址還是之前舊物件的首位址1231,pnode指標存放的是新物件的首位址1233。

C 中 指標引用)與 (指標)的區別

指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值...

C 中指標與引用區別

1.都是位址的概念 指標指向一塊記憶體,它的值為該塊記憶體的位址。引用是某塊記憶體的別名。1.指標是實體,引用只是乙個別名。2.使用時,引用需要解引用,指標不需要。解引用指獲得該記憶體位址處儲存的值 3.引用從一而終,指標可多變。給引用賦值修改的是該引用所關聯的物件的值,而並不是使引用與另乙個物件關...

C 中指標與引用的區別

指標和引用在c 中很常用,但是對於它們之間的區別很多初學者都不是太熟悉,下面來談談他們2者之間的區別和用法。1.指標和引用的定義和性質區別 1 指標 指標是乙個變數,只不過這個變數儲存的是乙個位址,指向記憶體的乙個儲存單元 而引用跟原來的變數實質上是同乙個東西,只不過是原變數的乙個別名而已。如 in...