指標與引用的區別

2021-07-10 14:23:14 字數 1344 閱讀 1868

1、非空區別

任何情況下都不能使用指向空值的引用。乙個

引用必須總是指向某個物件

。因此如果你用乙個變數並讓它指向乙個物件,但是該變數在某些時候可能不指向任何物件,這時應該把變數宣告為指標,因為這樣可以賦空值給該變數。相反,如果變數肯定指向乙個物件,如設計不允許變數為空,這時可以把變數宣告為引用。不存在指向空值的引用這個事實意味著使用引用的**效率比使用指標要高。

2、合法性區別

在使用引用之前不需要測試它的合法性。相反,指標則應該總是被測試,防止為空。

3、可修改區別

指標可以被重新賦值以指向另乙個不同的物件。但是引用則總是指向在初始化時被指定的物件,以後不能改變,但是指定物件其內容可以改變。

4、應用區別

以下情況應該使用指標:一是存在不指向任何物件的可能(能夠設定指標為空),二是需要能夠在不同的時刻指向不同的物件(能改變指標指向)。如果總是指向乙個物件並且一旦指向乙個物件後就不會改變指向,那麼應使用引用。

例子:

#includeusing namespace std;

int main()

{int iv; //1

int iv2=1024; //2

int iv3=999; //3

int &reiv; //4

int &reiv2 = iv; //5

int &reiv3 = iv; //6

int *pi; //7

*pi = 5; //8

pi =&iv3; //9

const double di; //10

const double maxwage = 10.0; //11

const double minwage = 0.5;

const double *pc = &maxwage; //12

cout<

分析:

1 正確,正常地宣告乙個整型變數。

2、3 正確,正常地宣告乙個整型變數,同時初始化這個變數。

4 錯誤,宣告乙個引用,但引用不能為空,必須同時初始化。

5、6正確,宣告乙個引用,但引用不能為空,必須同時初始化。

7 正確,宣告乙個整數指標,但是並沒有定義這個這個指標所指向的位址。

8 錯誤,整數指標pi並沒有指向實際的位址。在這種情況下給它賦值是錯誤的,因為賦的值不知道該放到**去,從而造成錯誤。

9 正確,整數指標pi指向iv3實際的位址。

10 錯誤,const常量賦值時,必須同時初始化。

11 正確,const常量賦值並同時初始化。

12 正確,const常量指標賦值並同時初始化。

引用與指標的區別

1.初始化要求不同。引用在建立的同時必須初始化,而指標在定義的時候不必初始化,可以在定義後面的任何地方重新賦值 2.可修改性不同。引用一旦被初始化,就不能被另乙個物件引用了,而指標在任何時候都可以指向另乙個物件 3.不存在null引用。引用不能使用指向空值的引用,必須指向某物件 而指標可以是null...

指標與引用的區別

指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?首先,要認識到在任何情況下都不能使用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓它指向乙個物件,但...

指標與引用的區別

指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?首先,要認識到在任何情況下都不能用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓它指向乙個物件,但是...