指標與引用是c++中兩個很重要的概念,它們功能看過去很相似,就是都是間接引用某個物件,那麼我們應該在什麼時候使用指標,什麼時候使用引用呢,下面請允許我慢慢道來:
int a=1;
int*p=
&a;int a=1;
int&b=a;
上面定義了乙個整形變數和乙個指標變數p,該指標變數指向a的儲存單元,即p的值是a儲存單元的位址;而下面2句定義了乙個整形變數a和這個整形a的引用b,事實上a和b是同乙個東西,在記憶體占有同乙個儲存單元。
char
*str=0;
//設定指標為空值
char
&s=*str;
//讓引用指向空值
//你應該避免出現上面的錯誤!
string& rs;
//錯誤引用必須被初始化
string s
("xyzzy");
string& rs = s;
//正確rs指向s複製**
// 指標沒有這樣的限制
string *ps;
//未初始化的指標合法但危險
void
printdouble
(const
double
& rd)
//肯定指向乙個double值複製**相反指標則應該總是被測試防止其為空
void
printdouble
(const
double
*pd)
string s1
("nancy");
string s2
("clancy");
string& rs = s1;
//rs引用s1
string *ps =
&s1;
//ps指向s1
rs = s2;
//rs仍舊引用s1,但是s1的值現在是"clancy"
ps =
&s2;
//ps現在指向s2;s1沒有改變
實際上"引用"可以做的任何事情"指標"也都能夠做,為什麼還要"引用"這東西? 答案是"用適當的工具做恰如其分的工作"。 指標能夠毫無約束地操作記憶體中的任何東西,儘管指標功能強大,但是非常危險;如果的確只需要借用一下某個物件的"別名",那麼就用"引用",而不要用"指標",以免發生意外。
引用和指標的對比
引用和指標的對比 相同點 都是位址的概念 指標指向一塊記憶體,它的內容是所指記憶體的位址 而引用則是某塊記憶體的別名。不同點 指標是乙個實體,而引用僅是個別名 引用只能在定義時被初始化一次,之後不可變 指標可變 引用 從一而終 指標可以 見異思遷 引用沒有const 指標有const const 的...
指標 和 引用 大對比
相同點 都能夠直接引用物件,並對物件進行操作.不同點 指標引用 指標型別的變數能夠儲存乙個物件的位址 引用是乙個物件的別名 可以為空nil,可以不初始化 不可以為空nil,必須初始化 當設計乙個變數用於指向另乙個物件,但是變數有可能為空,這時應該使用指標.當設計乙個變數總是指向乙個物件,不允許為空,...
指標引用和引用指標的區別
c 在傳參的過程中,指標 和指標引用 是有區別的。雖然,我們往往可以通過傳指標然後通過間址訪問來修改指標所指向物件的值,同樣,通過引用也可以直接修改物件的值。但是,當傳指標的時候有乙個問題,就是,我們雖然可以通過指標來修改指標所指向物件的值,但是我們沒有不能直接修改指標的內容 也就是指標變數存放的位...