引用和指針做形參時的區別


引用和指針做形參是很常見的問題,但是它們在做參數的時候是有區別的。先說一下指針吧,指針他是一個變量,有具體的值,他的值是一個地址(非const)。

而引用是對一個變量的引用,是變量的別名,並且在引用的時候必須要初始化。舉個例子吧:  

int  a=2;    

int  &b=a;    // b是對a的引用,a、b是同一個內存單元,即a和b的值都是2,b就相當於是a的一個別名,改變b的值a也會發生改變,改變a的值b也會發生改變,例如

b=10;      當系統執行了這條語句后,a和b的值就都變成了10;

a=-5;       當系統執行了這條語句后,a和b的值就都變成-5。 因為a和b具有同一個內存空間,所以不管改變哪一個的值,另一個也會跟着發生改變,可以理解為一個

人他可以有兩個名字,他既可以叫 張三,也能叫李四,但不管是哪個名字,其實說的是一個人。然后說一下引用和指針做形參時的具體用法吧,舉下面這個例子:

void swap(int &pa,int *pb)

{

}

int main()

{

   int a,*b;

   swap(a,b)  

}

在主函數中調用swap()時,指針和引用做形參就是上面的形式。當用指針或者引用做形參來改變主函數中變量的值得時候,指針是值傳遞,傳遞的是指針變量b的值;而

引用是址傳遞,傳遞的是變量a的地址。另外還有一點要知道,指針做形參,傳遞指針的時候,會產生一個臨時的指針變量,需要分配額外的內存空間;但是傳引用的話

則不會,所以傳引用效率更高,也比指針更安全。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM