亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

函數的形參一定要是引用么?

函數的形參一定要是引用么?fun(int &x,int &y)難道不能寫成fun(int x,int y)?引用的好處是什么,小蘿卜頭和羅XX為什么用小蘿卜頭就好,用羅XX就不好?

正在回答

3 回答

其實啊,對于函數參數的傳遞(也就是實參與形參的結合),在C語言中,一般是兩種,一種按值傳遞,一種是按指針傳遞,按值傳遞我們熟悉,創建形參,將實參的值賦給他,然后形參參與到函數運算,但是對于一些需要函數(比如交換函數)改變傳入的實參的時候(我理解的實參是這樣的,對于按值和按指針,實參就是該變量的值,而形參就是接受該值得變量),按值傳遞不能起作用了,因為他不是操作原數據而是他的副本,這時候指針就起作用了,傳入的是地址的拷貝,但是我們依然可以通過拷貝處理原數據,所以可以完成任務,這時候我們就發現,按值傳遞傳入的數據的拷貝,如果是大型結構體,拷貝起來費空間費時間,遠不如一個指針來的容易,這就是有點。再回到C++,他引入了引用的概念,也就出現了按引用傳遞的概念,但是引用本質就是指針,從前的C++編譯器遇見引用就是先將其處理為指針再完成編譯,引用是變量a別名,p是指向該變量(比如a)指針,那么*p是不是可以看做a的別名呢,想想,*p其實就是a,那么*p算算是a的引用呢,當然!這就是引用的本質,引用只不過是指針的簡化而已!以后的類也是用引用,幾乎不用指針,不是不行,而是寫著麻煩,看著難受而已!記住本質

0 回復 有任何疑惑可以回復我~
#1

小程序魔王

你扯遠了,哪兒有那么復雜,c語言參數的傳遞只有一種,就是傳值,值的類型可能是各種類型,比如整型,指針類型,引用類型
2019-04-22 回復 有任何疑惑可以回復我~

我是這樣理解的,

如果是void fun(int x,int y)其實是找了一個跟羅xx同名的人,但本質上不是羅某某,所以形參的羅xx無論做什么事情都不會影響實參羅xx

但是void fun(int &x,int &y)是給了實參羅某某取了別名,叫蘿卜頭,你叫蘿卜頭做什么事情,實質上是去叫羅某某做的,所以形參用的是引用的話,形參的數值的改變肯定會影響到實參的值

4 回復 有任何疑惑可以回復我~

這個主要是形參與實參的關系 。
在函數的參數列表里的,是形參,它是對實參的一個拷貝, 但是它們不是在內在同一個塊。所以對形參的改變不會影響實參的值 。
c++可以通過引用,也就是別名來改變, 比如把函數定義成 void fun(int x,int &y)
這樣在函數里,對第二個參數做改變,相應的實參也會改變,因為它們是同一個。 這就是引用類型的作用。

2 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C++遠征之離港篇
  • 參與學習       122678    人
  • 解答問題       493    個

C++掃清通往面向對象的最后一道障礙,將所有知識點融會貫通

進入課程

函數的形參一定要是引用么?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號