1.引用必須被初始化;
2.引用一旦與初始值物件繫結,就不會變化(引用從一而終)!!!
3.引用初始值必須為乙個物件,不能使常數
4.引用必須與被引用的物件型別一致
重點:作用在引用上的所有操作事實上都是作用在該引用所繫結的物件上。
使用引用有何優點?
在傳參的時候,使用指標傳參,編譯器需要給指標另行分配儲存單元,儲存乙個該指標的副本,在函式中對這個副本進行操作;而使用引用傳參,編譯器就不需要分配儲存空間和儲存副本了,函式將直接對實參進行操作。所以使用引用使得程式的執行速度更快,執行效率更高。
我們可以看出別名和本來的變數指向同一塊空間,是否引用變數的改變會引起原有變數的改變?
#includeusing namespace std;
void test()
以swap函式為例,比較值傳遞、址傳遞,引用傳遞。
#includeusing namespace std;
//值傳遞,無法實現交換兩值的效果
void swap1(int a, int b)
//址傳遞
void swap2(int* a, int* b)
//傳引用
void swap3(int& a, int& b)
int main()
所以說在傳參這一塊引用和指標一樣可以避免傳值,形參是實參的臨時拷貝,所以形參改變不會影響到實參。
….總結:傳參傳結構體時要避免直接傳結構體,因為一旦結構體存在陣列時,會先開好等大的空間然後一步步將資料拷進去,這樣就會很低效。
#includeusing namespace std;
//傳值做返回值
…….結論:
1、不要返回乙個臨時變數的引用。
2、如果返回物件出了作用域仍然存在,盡量使用引用作為返回值,會更加高效。
1、引用只能在定義時初始化一次,之後不可以改變指向其他變數;指標變數的值可變。
2、引用必須指向有效的變數,指標可以為null。
3、sizeof(引用)得到所指向變數的大小,sizeof(指標)得到指向變數的位址的大小
4、指標++,加的是所指向型別的大小,引用++加的是1,加在變數上。
5、指標會有野指標的風險,所以引用相較於指標更加安全。
C 指標和引用
在深入介紹之前我們首先來看一下指標和引用的定義 指標和引用的區別,然後分別針對指標和引用展開討論,深入細節為何有這些差異。指標和引用的定義,下面用通俗易懂的話來概述一下 而宣告指標是可以不指向任何物件,也正是因為這個原因,使用指標之前必須做判空操作,而引用就不必。其次,引用不可以改變指向,對乙個物件...
C 引用和指標
引用和指標看上去差不多,看上去差不多,其實男寶寶和女寶寶是不一樣的 用起來還是有一定差距。本人菜鳥僅將遇到的問題記錄備案,以便日後翻查 ptrfunc.h ifndef ptrfunc h define ptrfunc h typedef int func int,int struct aa end...
C 指標和引用
有了變數名,為什麼還需要乙個別名呢?c 之所以增加引用型別,主要是把它作為函式引數,以擴充函式傳遞資料的功能 到目前為止我們介紹過函式引數傳遞的兩種情況 1 將變數名作為實參和形參 這時傳給形參的是變數的值,傳遞是單向的 如果在執行函式期間形參的值發生變化,並不傳回給實參 因為在呼叫函式時,形參和實...