指標與引用的概念和不同

2021-10-19 10:33:49 字數 1256 閱讀 6485

指標的概念:指標就是乙個位址變數,有自己的一塊空間

指標大小是4個位元組

1.

int x =0;

2.int

*p =

&x;可以看出指標p直接指向變數x的位址,

&p是指標的對應位址

引用的概念:變數的別名,不占用記憶體空間

1.

int x =0;

2.int

&y = x;

y的位址與x的位址一樣,y沒有屬於自己的位址因此它不占有記憶體空間

函式的傳參可以分為個值傳遞(不改變內容)和位址傳遞(改變內容),c++11中也可以用引用作為形參

1.

inta

(int

&a)2.

3.int

main()

其實指標和引用只是表面上看起來不一樣是為了方便使用,在低層實現時,兩者是一樣的.(把1儲存在變數a的位址中,把變數a的位址給到乙個位址暫存器中,把位址暫存器中的位址存到指標p的位址中,在彙編的實現中引用和指標是一樣的)主流的編譯器會把引用解釋成const指標

c/c++中指標和引用的區別:

指標有自己的記憶體空間,引用只是變數的別名(儘管它們在底層彙編過程的實現一樣,在優化編譯器中會把對引用進行的計算直接用變數的值進行計算)

使用sizeof看乙個指標的大小就是4,而引用的大小取決於引用物件的型別

指標可以初始化為null,而引用必須被初始化為乙個已有物件的引用;

作為引數傳遞時,指標需要被解引用才可以對物件進行操作,而直接對引用的修改會改變引用所指向的物件;(即傳引數要傳p,如果對

p進行加一操作會改變

p*所指向的位址)

可以有const指標,但是沒有const引用(const可以指代常變數,常變數不可改變;也可以指代常指標,指標所指向的位址不可以改變)const的使用是先左後右int * const j;(常指標,值可變,但是指標指向的位址不可變) const int * j;(值不可變但是指標指向的位址可變) const int & x;(不可以通過引用x去改變物件的值)指標可以在使用中指向其它物件,但是引用只能是初始化的物件,不能改變

指標可以有多級指標,而引用止於一級

指標和引用使用++運算子的意義不一樣

如果返回動態記憶體分配的物件或記憶體.必須用指標,引用可能引起記憶體洩露

C 中引用與指標的相同和不同

程式在編譯時分別將指標和引用新增到符號表上,符號表上記錄的是變數名及變數所對應位址。指標變數在符號表上對應的位址值為指標變數的位址值,而引用在符號表上對應的位址值為引用物件的位址值。符號表生成後就不會再改,因此指標可以改變其指向的物件 指標變數中的值可以改 而引用物件則不能修改。相同點 都是位址的概...

指標與引用做引數的不同

指標和引用一直是學習c 時的乙個難點,不知道什麼時候應該用指標,什麼時候應該用引用。下面是指標與引用做為函式時的不同,看了之後,也許上面的問題就不是問題了,呵呵。1.兩者都可以不用複製變元而提高效率,但是指標的傳遞實際上是複製了指標的,而引用沒有複製。2.雖然兩者都可以改變變元的值。但是如果函式引數...

C 中引用和指標的不同

分類 c 2009 03 01 14 19 281人閱讀收藏 舉報 引用,其本質就是指標,將它用在一些特別的場合,會比指標更簡潔,更方便。具體說來,指標多用於動態記憶體管理和對陣列的操作等,c風格的 接收和返回指標 引用則往往用在接收和返回類型別的名字空間域函式或類域函式,以避免類物件的複製開銷。但...