1樓:井冰雙牽藏
從主函式main開始執行,執行到fun(x)時,此時為x實參,其值為2,下一步呼叫fun函式,將2傳遞給形參x,繼續執行程式,形參x的值被賦為7,但注意,被呼叫的函式為無值型void,沒有return,無法將得到的形參值x=7返回主函式,所以x的值仍然為2,沒有改變。
2樓:善三詩龐翱
1c++標準中沒有所謂的「c++為什麼返回引用的函式的形參也必須是傳引用」的規定。
2在你的例子裡(很奇怪的用法,為什麼不直接cp1=
cp2;呢),不能去掉"&"的原因如下:
如果沒了引數的"&",那麼這個returnme函式所做的事情就是將cp1複製給臨時物件a,
然後返回a的引用,之後相當於a
=cp2;
再之後過了這一行,a
的生命週期完結了。
而cp1本身自然不受影響。
ps:如果你對「生命週期」或者
返回區域性物件的引用
這些概念不熟悉的話,請參閱
effective
c++(這本薄書看明白了,那baidu
c++區的絕大多數問題都難不住你了)
3樓:類嘉容芒琪
fun傳入引數x之後,那個x已經不是原來的那個x了,fun已經新建了乙個int型別的變數,也叫做x,值和原來的x一樣,但是已經不是同乙個東東了。。這個東東叫做形參。。
C語言,函式引數傳遞方式是單向的,形參不能給實參賦值是什麼意思?自定義函式最後用return
實參把值傳給形參以後就和形參切斷聯絡了,對形參操作後得到的是副本。c語言是嚴謹的,乙個位址對應唯一的引數,但同乙個引數可能有不同的位址 拿經典的swap交換函式舉例 如果你交換的不是指定位址的變數 只是普通變數 那麼他給你返回的結果就是你給的變數的副本的交換 而當交換物件變成指定位址的物件的時候 就...
C語言問題函式中形參若為指標,則呼叫時對應位置上的實參不能
不能是 簡單變數,因為 它不是位址。語法規則而已。形參若為指標,實參必須是 指標變數,或 陣列名,或 簡單變數的位址。陣列名 就是陣列的首位址,是位址 簡單變數的位址 是位址 形參若為指標,實參是 指標變數,這是一一對應,天經地義。c語言函式呼叫時,實參和形參是如何傳遞的?什麼時候要寫指標型變數?求...
c語言程式設計,編寫函式,根據形參x和y的關係,返回不同的值
include int cmp int x,int y scanf d d a,b c cmp a,b printf d c d n a,s c 1 b return 0 如下 include include int func int x,int y else if x y else int mai...