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