性質上的區別
使用上的區別:
引用必須要初始化且不能是null,而指標可以是null。且指標的值可以改變,引用不能改變(更像是const,常量指標的概念)
有const指標,但沒有const引用
指標可以有多級(** p),引用只有一級
"sizeof引用"得到的是所指向的變數(物件)的大小,而"sizeof指標"得到的是指標本身的大小;(指標還需要解引用,而引用直接遮蔽了該過程,直接取出了內容)
指標和引用的自增(++)運算意義不一樣;(位址++,值++)
如果返回動態記憶體分配的物件或記憶體,必須使用指標,引用可能引起記憶體洩漏。
作為函式引數進行傳遞時的區別:
使用指標傳遞引數,可以實現對實參進行改變的目的,是因為傳遞過來的是實參的位址,因此使用*a實際上是取儲存實參的記憶體單元裡的資料,即是對實參進行改變,因此可以達到目的,當把引用作為引數進行傳遞時,也是將實參的乙個拷貝傳遞給形參。
在將引用作為函式引數進行傳遞時,實質上傳遞的是實參本身,即傳遞進來的不是實參的乙個拷貝,因此對形參的修改其實是對實參的修改,所以在用引用進行引數傳遞時,不僅節約時間,而且可以節約空間。
1 指標和引用的區別
1 什麼是指標?2 什麼是引用?引用 引用是乙個物件的別名,主要用於函式引數和返回值型別,符號x 表示x型別的引用。1 引用不可以為空,但指標可以為空。引用是物件的別名,引用為空 物件都不存在,怎麼可能有別名!所以定義乙個引用的時候,必須初始化。宣告指標是可以不指向任何物件,因此,使用指標之前必須做...
1 指標與引用的區別
指標 指標是位址傳遞,但其本質上是值傳遞,通常實參傳給形參時,被調函式的形參作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。所以進行指標傳遞時,作為實參的指標本身所存的位址值是不會變的,但指標所指位址中的內容則會根據函式的不同操作而改...
5 指標 引用的區別
函式傳值的三種方式 傳值 傳引用 傳指標 相同點 都是位址的概念 指標指向一塊記憶體,它的內容是所指記憶體的位址 引用是某塊記憶體的別名。區別 1.指標是乙個實體 在棧空間有自己的記憶體空間 而引用僅是個別名 不佔記憶體空間 2.引用使用時無需解引用 指標需要解引用 3.引用只能在定義時被初始化一次...