Re: [問題] call by ref

看板java作者 (小狗撒尿1424)時間17年前 (2008/12/10 18:57), 編輯推噓7(703)
留言10則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《walm20 (New CygnusX)》之銘言: : 我的問題如下註解部份: class A{ } public class Test{ public static void f(A c) { c=new A(); } public static void main(String[] a) { A b=null; f(b); //為什麼執行完這行b還是null? } } 我改了一下這個程式 這樣點一下 你再自己想想看 然後想清楚兩件事情 1. ref到底是什麼東西 2. call by ref實際上到底做了什麼 大概就會明瞭了 : 先謝啦 : 目前想到的解法: (若一定要透過function f來new的話) : 若變數要在main一開始就宣告,而隨著得到更多的資訊來new A() : 則只能把 f之return type改成A : 藉由return new A();來達成 -- 爛室友毀了我的大一 爛室友也有可能毀了你的一年 慎選吧 寶貝 我糙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.37.126 ※ 編輯: orc1424 來自: 118.169.37.126 (12/10 19:00)

12/10 19:01, , 1F
請問是不是跟我原文下面講的?
12/10 19:01, 1F

12/10 21:49, , 2F
c跟java定義的ref 有一點落差.
12/10 21:49, 2F

12/10 22:37, , 3F
他傳ref的態度是call by value,也就是你無法改ref本身
12/10 22:37, 3F

12/10 22:38, , 4F
但你可以存取ref參照的內容
12/10 22:38, 4F

12/11 00:11, , 5F
這種年經文又出現了.
12/11 00:11, 5F

12/11 04:20, , 6F
三樓正解
12/11 04:20, 6F

12/11 04:22, , 7F
基本上呼叫f()時,JAVA把a變數的內容"複製"到f的b變數去
12/11 04:22, 7F

12/11 04:24, , 8F
更正,是把b變數的內容"複製"到f的c變數去
12/11 04:24, 8F

12/11 11:13, , 9F
感謝~
12/11 11:13, 9F

12/11 13:13, , 10F
照定義C 一樣沒有call by reference,拿C 來說嘴就有題了
12/11 13:13, 10F
文章代碼(AID): #19Fw2bbY (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
5
6
完整討論串 (本文為第 2 之 2 篇):
7
10
5
6
文章代碼(AID): #19Fw2bbY (java)