課程
/后端開發
/C++
/C++遠征之離港篇
函數的形參一定要是引用么?fun(int &x,int &y)難道不能寫成fun(int x,int y)?引用的好處是什么,小蘿卜頭和羅XX為什么用小蘿卜頭就好,用羅XX就不好?
2018-10-09
源自:C++遠征之離港篇 2-1
正在回答
其實啊,對于函數參數的傳遞(也就是實參與形參的結合),在C語言中,一般是兩種,一種按值傳遞,一種是按指針傳遞,按值傳遞我們熟悉,創建形參,將實參的值賦給他,然后形參參與到函數運算,但是對于一些需要函數(比如交換函數)改變傳入的實參的時候(我理解的實參是這樣的,對于按值和按指針,實參就是該變量的值,而形參就是接受該值得變量),按值傳遞不能起作用了,因為他不是操作原數據而是他的副本,這時候指針就起作用了,傳入的是地址的拷貝,但是我們依然可以通過拷貝處理原數據,所以可以完成任務,這時候我們就發現,按值傳遞傳入的數據的拷貝,如果是大型結構體,拷貝起來費空間費時間,遠不如一個指針來的容易,這就是有點。再回到C++,他引入了引用的概念,也就出現了按引用傳遞的概念,但是引用本質就是指針,從前的C++編譯器遇見引用就是先將其處理為指針再完成編譯,引用是變量a別名,p是指向該變量(比如a)指針,那么*p是不是可以看做a的別名呢,想想,*p其實就是a,那么*p算算是a的引用呢,當然!這就是引用的本質,引用只不過是指針的簡化而已!以后的類也是用引用,幾乎不用指針,不是不行,而是寫著麻煩,看著難受而已!記住本質
小程序魔王
我是這樣理解的,
如果是void fun(int x,int y)其實是找了一個跟羅xx同名的人,但本質上不是羅某某,所以形參的羅xx無論做什么事情都不會影響實參羅xx
但是void fun(int &x,int &y)是給了實參羅某某取了別名,叫蘿卜頭,你叫蘿卜頭做什么事情,實質上是去叫羅某某做的,所以形參用的是引用的話,形參的數值的改變肯定會影響到實參的值
這個主要是形參與實參的關系 。在函數的參數列表里的,是形參,它是對實參的一個拷貝, 但是它們不是在內在同一個塊。所以對形參的改變不會影響實參的值 。c++可以通過引用,也就是別名來改變, 比如把函數定義成 void fun(int x,int &y)這樣在函數里,對第二個參數做改變,相應的實參也會改變,因為它們是同一個。 這就是引用類型的作用。
舉報
C++掃清通往面向對象的最后一道障礙,將所有知識點融會貫通
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-12-25
其實啊,對于函數參數的傳遞(也就是實參與形參的結合),在C語言中,一般是兩種,一種按值傳遞,一種是按指針傳遞,按值傳遞我們熟悉,創建形參,將實參的值賦給他,然后形參參與到函數運算,但是對于一些需要函數(比如交換函數)改變傳入的實參的時候(我理解的實參是這樣的,對于按值和按指針,實參就是該變量的值,而形參就是接受該值得變量),按值傳遞不能起作用了,因為他不是操作原數據而是他的副本,這時候指針就起作用了,傳入的是地址的拷貝,但是我們依然可以通過拷貝處理原數據,所以可以完成任務,這時候我們就發現,按值傳遞傳入的數據的拷貝,如果是大型結構體,拷貝起來費空間費時間,遠不如一個指針來的容易,這就是有點。再回到C++,他引入了引用的概念,也就出現了按引用傳遞的概念,但是引用本質就是指針,從前的C++編譯器遇見引用就是先將其處理為指針再完成編譯,引用是變量a別名,p是指向該變量(比如a)指針,那么*p是不是可以看做a的別名呢,想想,*p其實就是a,那么*p算算是a的引用呢,當然!這就是引用的本質,引用只不過是指針的簡化而已!以后的類也是用引用,幾乎不用指針,不是不行,而是寫著麻煩,看著難受而已!記住本質
2018-10-29
我是這樣理解的,
如果是void fun(int x,int y)其實是找了一個跟羅xx同名的人,但本質上不是羅某某,所以形參的羅xx無論做什么事情都不會影響實參羅xx
但是void fun(int &x,int &y)是給了實參羅某某取了別名,叫蘿卜頭,你叫蘿卜頭做什么事情,實質上是去叫羅某某做的,所以形參用的是引用的話,形參的數值的改變肯定會影響到實參的值
2018-10-09
這個主要是形參與實參的關系 。
在函數的參數列表里的,是形參,它是對實參的一個拷貝, 但是它們不是在內在同一個塊。所以對形參的改變不會影響實參的值 。
c++可以通過引用,也就是別名來改變, 比如把函數定義成 void fun(int x,int &y)
這樣在函數里,對第二個參數做改變,相應的實參也會改變,因為它們是同一個。 這就是引用類型的作用。