非引用形參VS指標形參VS引用形參

2021-07-09 11:01:56 字數 833 閱讀 1217



一、非引用形參

voidadd1(intv1)

這是最普通的形參方式,當函式被呼叫時,呼叫拷貝建構函式,生產乙個新的例項,函式所有的修改,都是對新的例項的修改;函式退出之前,會呼叫析構函式,**資源。

二、指標形參

voidadd2(int*p)

使用指標做為函式的形參,同樣指標的值(指標的位址)不會因為

p+=1

而受到影響,但是指標指向的位址的值(

*p)將會改變。所以要想修改實參的值,可以使用這種方法。但是還有一種更安全更自然的方法

-引用形參

三、引用形參

voidswap(int &a,int &b)

引用形參直接關聯到其所繫結的物件,而非這些物件的副本。所以這種方法可以修改實參的值,而且更加直觀。

引用必須初始化,不能為空

用more effective c++ 中的解釋:

指標與引用看上去完全不同(指標用操作符』*』』->』,引用使用操作符』.』),但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?

首先,要認識到在任何情況下都不能用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓它指向乙個物件,但是該變數在某些時候也可能不指向任何物件,這時你應該把變數宣告為指標,因為這樣你可以賦空值給該變數。相反,如果變數肯定指向乙個物件,例如你的設計不允許變數為空,這時你就可以把變數宣告為引用。

引用形參 指標形參的使用

引用形參 指標形參可以改變主函式內的實參值 includeusing std cin using std cout using std endl 形參其實是在把實參傳遞給子函式的時候定義了乙個新的變數,但是這個變數的值和實參相等,所以在子函式裡無論怎麼修改都不會影響到呼叫它的函式的實參的值 int ...

指標形參與引用形參

看了很多關於指標形參和引用形參的解答,不盡人意。指標形參使用情形 1 標準的c中,c沒有引用 2 形參可以為空 引用形參使用情形 1 形參不可以為空,總指向某個物件 指標形參 指標的行為和其他非引用型別一樣,當執行指標拷貝操作時,拷貝的是指標的值,拷貝之後,兩個指標是不同的指標,如 int n 0,...

函式形參 指標,引用,const,陣列形參

指標也是物件,也會拷貝,所以分實參指標和形參指標。在傳進函式時,實參進行拷貝,所以在函式裡改變指標值不影響實參。void reset int ip 引用不是物件,通過引用可以改變實參 void reset int i 使用引用的好處是避免了拷貝。其實也只是兩個變數名的傳遞,和變數規則一致,如果在函式...