C 引用和指標

2021-08-21 13:44:00 字數 1590 閱讀 8284

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 將變數名作為實參和形參 這時傳給形參的是變數的值,傳遞是單向的 如果在執行函式期間形參的值發生變化,並不傳回給實參 因為在呼叫函式時,形參和實...