Re: [問題] 請教傳值呼叫(call by valu)的問題

看板java作者時間19年前 (2006/02/21 20:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《phechen.bbs@ptt.cc》之銘言: > 小弟在書上看到Call by value的一個範例,有兩個問題想請教板友們... > 先附上程式碼: > 1 class > 2 { > 3 public static void main(String args[]) > 4 { > 5 int x=10; > 6 System.out.println("呼叫process方法前,x的值為" +x); > 7 process(x); > 8 System.out.println("呼叫process方法後,x的值為" +x); > 9 } > 10 static void process(int y) > 11 { > 12 y+=10; > 13 System.out.println("process這方法中的 y =" +y); > 14 } > 15 } > 執行結果: > 呼叫process方法前,x的值為 10 > process這方法中的 y =20 > 呼叫process方法後,x的值為 10 > 小弟的問題: > 為何排序不是"process這方法中的 y =20"在最後面, > 而是"呼叫process方法後,x的值為 10"在最後面呢? > 另外,第七行為process(x),第十行為process(int y), > 一個是x,一個是y,為什麼x會傳給process(int y)呢?兩者有什麼關係嗎? 首先你知道什麼就做call by value 和 call by address嘛? 這兩個你必須先查清楚(JAVA和C#用法與C++有點不一樣..這個要分清楚) 首先這是個call By value方始呼叫副程式 而x和y事扮演actual 和 formal (詳見程式語言XD) 因為解釋起來也是文謅謅 所以醬說好了 當執行process(x)時 他只是把X的值10"複製"給Y 同時! 執行權就交給副程式static void process(int y) 當Y加10印出來20完後..執行完畢 執行全會再度交回得主程式..也就是有被冠上main的那隻 我想你會認知錯誤可能是身受"C語言的結構循序化" 不過..C語言也有副程式說.. 總之..你必須買本書 先把前幾張讀完 在範例去學習..不久之後無師自通(..當然..有老師更快) -- ┌───曾經有人對我說... 悲傷的對岸 據說可以找到微笑──┐ │ 好不容易到達後 │ └──我只找到失落.... ──For KARU -- ※ Origin: 摩卡小築 <moca.csie.chu.edu.tw> ◆ From: 218-168-205-79.dynamic.hinet.net
文章代碼(AID): #13-m4300 (java)
文章代碼(AID): #13-m4300 (java)