C 指標與引用

2021-09-22 14:04:06 字數 891 閱讀 4084

我們都知道形參和實參的區別,形參所在的函式為函式定義,實參為呼叫中的引數:

int add(int a,int b)

int main()

上述的add函式為傳值形式,傳值就會存在乙個問題,即生命週期的問題,一般建立的區域性變數出了作用域生命週期也就結束了,即c出了add函式就會因為構成函式的棧幀的消失而消失,但是這個功能卻能正常執行這時為什麼呢?這時因為在add函式即將結束的時候,main()函式內部建立了乙個臨時拷貝,拷貝了c的返回值,不然的話怎麼改變實參的值呢?這樣就出現乙個問題,即產生了記憶體的消耗,建立了空間。

這時候就會有人說了使用指標啊,指標不會針對變數進行專門的拷貝啊,但是指標存在問題就是,指標的建立也會耗費記憶體空間,指標還需要對其儲存的位址進行解引用才能返回乙個數值。

這時候c++就引入了引用這個概念;引用只需在定義的時候進行初始化就行,不用操心記憶體開闢的問題,因為引用指向了被引用的物件自身沒有建立空間,而且引用訪問實體時候,是編譯器自己處理的;指標需要顯示解引用

但是引用和指標還是存在如下區別:

引用需要定義的時候初始化,而指標不需要

引用在引用乙個實體之後,不能再引用其它實體了,而指標不存在這樣的問題

沒有null引用,而有null指標

再sizeof中含義不同,引用結果為引用型別的大小,指標始終是機器本身的位址空間所佔位元組個數

有多級指標,沒有多級引用

引用自+1為實體值+1,而指標為偏移

C 指標與引用

include 引用傳遞 int add1 int x,int y 指標傳遞 int add2 int x,int y 值傳遞 int add3 int x,int y void main int a 1 int b a 引用,表示b的引用指向了a 定義引用 開頭 必須賦初值 引用變數不占用記憶體 ...

C 指標與引用

從函式引數傳遞說起 int addition int x,int y int main void duplicate int a,int b int main 按值傳遞,顧名思義,函式形參僅僅得到變數傳來的值,函式的任何操作並不對變數產生任何變化 按位址傳遞,他的定義方式與按值傳遞不一樣 注意其在m...

C 引用與指標

1 引用即給當前物件起了個別名,通過將宣告符寫成 t c的形式來定義引用,其中t是變數名,c是當前物件的名字 修改別名相當於修改當前物件,引用必須初始化,且不能更改指向物件 example int a 10 定義a及初始化 int c a 定義a的引用c cout2 引用不是物件,只是對目前已經存在...