1、初始化要求不同,引用在建立的同時必須初始化,即需要引用到乙個有效的物件,而指標在定義時不必馬上初始化,可以在後面任何地方馬上賦值。
2、引用繫結到乙個有效的物件後不可修改,指標不同,可以隨時指向任意物件。
3、不存在null的引用,它總是指向某個物件,指標可以指向null,所以指標更加靈活,也更容易出錯。
4、使用測試的區別,引用不會指向null,所以使用前不需要測試它的合法性,而指標的使用要首先測試合法性,所以引用的效率比指標高『
5、實際上在語言層,引用的用法與物件一樣;在二進位制層面,引用是通過指標實現的,引用有指標的效率也有物件的方便與直觀。』
由於引用不存在空引用,並且引用一旦被初始化就指向乙個物件,引用不能改變繫結的物件,因此引用很安全;對於指標,隨時可以改變指向的物件,並且可以不被初始化,或為null指標,所以不安全。
1、指標常量:首先它是乙個常量,再是乙個指標,這個指標不能修改所指向的地方,類似於p++的操作時會出錯;但可以修改其所指的內容;
char const *p ==> 常量指標
const char *p ==> 常量指標
char* const p ==>指標常量
const char* const p ==>p是乙個常量的指標,它本身也是乙個常量
類的非靜態成員函式屬於類的物件含有this指標;類的靜態(static)成員函式屬於類本身不含有this指標,類的友元函式是非成員函式不含有this指標。
指標與引用
摘自 高質量c 程式設計 指標與引用,在more effective c 的條款一有詳細講述,我給你轉過來 條款一 指標與引用的區別 指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用...
引用與指標
引用就是物件的另乙個名字,在實際的程式中,引用主要用作函式的形式引數。引用是一種復合型別,通過在變數名前新增 符號來定義。復合型別是指用其他型別定義的型別。在引用的情況下,每一種引用型別都 關聯到 某一其他型別。引用必須用與該引用同型別的物件初始化。當引用初始化後,只要該引用存在,它就保持繫結到初始...
指標與引用
include iostream using namespace std void testref int i 10 引用不可以為空,他是乙個物件的別名 int ref i ref cout i 00824f1e mov dword ptr i 1 把i的位址傳入eax 並把eax指標的位址傳給re...