急切解決,C 呼叫函式時,原實參的值被莫名其妙的改變,希望各位給出一定解釋

時間 2021-09-05 11:58:53

1樓:匿名使用者

addlist 中你沒有給la申請新的空間,所以他的指向還是l1的位址,改動la就是改動l1啊

2樓:匿名使用者

問題還是出在你的addlist函式裡。

你的思路是將num1傳給l1,再將l1賦給la,計算過程中用la儲存相加後的計算結果,最後返回la。

但是,由於la和l1(也就是num1)指向的是同一塊記憶體單元,la的改變勢必導致num1的改變。你在函式首部的宣告(const list&l1,const list&l2)只能保證l1和l2本身內容不變,而不能保證鍊表l1和l2後面結點內容不被修改。

所以,建議你再增加乙個list lc來儲存相加後的計算結果並作為返回值。

在呼叫函式時,函式是怎樣傳值的,c語言函式呼叫時,實參和形參是如何傳遞的?什麼時候要寫指標型變數?求高手指點

毋惜苼 在c語言中,實參將值傳給函式中的形參,實現了自上而下的值傳遞,就可以呼叫函式了。舉個淺顯一點的例子吧 include void main int swap int x,int y 在主函式中,將實參a,b的值傳遞給被呼叫函式中的形參x,y,即將a,b分別代入x,y中計算,即達到了呼叫的目的。...

C 定義函式,有引數,實現對實參值的交換,用指標和引用2種方式實現

如下 void cmp int a,int b void cmp int a,int b 飲冰軒者 include main 這是引用,指標和這個差不多 include main 這是指標,求採納 void swap1 int a,int b 指標 void swap2 int a,int b 引用...

c語言中函式呼叫與返回值的關係是什麼

函式呼叫和返回值的關係其實和賦值運算的道理是一樣的只是,函式將計算機過程封裝,實現複雜的計算過程和提供良好的 重用。int sum int arg1,int arg2 函式原型int x x sum 1,3 呼叫函式,其中這裡的1,3我們稱為形式引數,它告訴函式要怎麼做。而函式是負責要做什麼 還是拿...