(1)非空區別。在任何情況下都不能使用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓他指向乙個物件,但是該變數在某些時候也可能不指向任何物件,這是你應該把變數宣告為指標,因為這樣你可以賦予空值給該變數。相反,如果變數肯定指向乙個物件,例如你的設計不允許變數為空,這時你就可以把變數宣告為引用。不存在指向空值得引用這個事實意味著使用引用的**效率比使用指標要高。
(2)合法性區別。在使用引用之前不需要測試它的合法性。相反,指標則應該總是被測試,防止其為空。
(3)可修改區別。指標與引用的另乙個重要的不同是指標可以被重新賦值以指向另乙個不同的物件。但是引用則是總是指向在初始化時被指定的物件,以後不能改變,但是指定的物件其內容可以改變。
(4)應用區別。總的來說,在以下情況下你應該使用指標:一是你考慮到存在不指向任何物件物件的可能(在這種情況下,你能夠設定指標為空),二是你需要能夠在不同的時刻指向不同的物件(在這種情況下,你能改變指標的指向)。如果總是指向乙個物件並且一旦指向乙個物件後就不會改變指向,那麼你應該使用引用。
文章出處:http://www.diybl.com/course/3_program/c++/cppxl/20081125/152591.html
#include
using
namespace std;
int main(int argc, char* argv)
指標和指標應用的區別
指標引數的傳遞,傳遞的是對指標的拷貝值,如果在函式中對指標的值進行修改,不會影響到主函式中的值,因為在函式執行完成後,執行這個函式產生區域性變數的棧區就會清空.指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體...
傳指標和傳指標引用的區別 指標和引用的區別(本質)
指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值...
傳指標和傳指標引用的區別 指標和引用的區別(本質)
指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值...