C C 指標和引用的區別

2021-09-27 09:10:08 字數 658 閱讀 1691

①從現象上看,指標在執行時可改變其所指向的值,而引用一旦和某個物件繫結後就不在改變。這句話可以這樣理解:指標可以被重新賦值以指向另乙個不同的物件。但是引用總指向在初始化時被指定的物件,以後不能改變,但是指定的物件內容可以改變。

②從記憶體上分配看,程式為指標變數分配記憶體區域,而不用為引用分配記憶體區域,引用宣告時必須初始化,從而指向乙個已經存在的物件,引用不能指向空值。

③從編譯上看,程式在編譯時分別將指標和引用新增到符號表上,符號表上記錄的是變數名及變數所對應位址。指標變數在符號表上對應的位址值是指標變數的位址值,而引用在符號表上對應的位址值是引用物件的位址值。符號表生成後就不會再改變,因此至真可以改變指向的物件(指標變數的值可以改),而引用物件不能改。這是使用指標不安全而使用引用安全的主要原因。

二、引用與指標的區別

1、指標是乙個實體,需要分配記憶體空間。引用只是變數的別名,不需要分配記憶體空間。

2、引用在定義的時候必須進行初始化,並且不能夠改變。指標在定義的時候不一定要初始化,並且指向的空間可變。(注:不能有引用的值不能為null)

3、有多級指標,但是沒有多級引用,只能有一級引用。

4、指標和引用的自增運算結果不一樣。(指標是指向下乙個空間,引用時引用的變數值加1)

5、sizeof 引用得到的是所指向的變數(物件)的大小,而sizeof 指標得到的是指標本身的大小。

C C 指標和引用區別

引用是別名,所以自身沒有空間,那麼必須與乙個合法的儲存單元關聯,所以定義必須初始化,所以引用不能為空,沒有null引用。指標是型別,有空間,可以為null,適用於動態分配記憶體。本質區別就是引用是別名,指標是型別,所以才表現出各自不同的特點。參考 1 儲存空間 指標是實體,有記憶體空間 引用是別名,...

C C 中指標和引用的區別

1.指標有自己的一塊空間,而引用只是乙個別名 2.使用sizeof看乙個指標的大小是4,而引用則是被引用物件的大小 3.指標可以被初始化為null,而引用必須被初始化且必須是乙個已有物件 的引用 4.作為引數傳遞時,指標需要被解引用才可以對物件進行操作,而直接對引 用的修改都會改變引用所指向的物件 ...

C C 中指標和引用的區別?

1.指標有自己的一塊空間,指標是乙個變數,只不過這個變數儲存的是乙個位址,指向記憶體的乙個儲存單元,即指標是乙個實體。而引用只是乙個別名 2.使用sizeof看乙個指標的大小是4,而引用則是被引用物件的大小 3.指標可以被初始化為null,而引用必須被初始化且必須是乙個已有物件 的引用 4.作為引數...