作者orc1424 (小狗撒尿1424)
看板java
標題Re: [問題] call by ref
時間Wed Dec 10 18:57:39 2008
※ 引述《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)
推 walm20:請問是不是跟我原文下面講的? 12/10 19:01
推 TonyQ:c跟java定義的ref 有一點落差. 12/10 21:49
→ sunneo:他傳ref的態度是call by value,也就是你無法改ref本身 12/10 22:37
推 sunneo:但你可以存取ref參照的內容 12/10 22:38
推 Lordaeron:這種年經文又出現了. 12/11 00:11
推 ninteen:三樓正解 12/11 04:20
→ ninteen:基本上呼叫f()時,JAVA把a變數的內容"複製"到f的b變數去 12/11 04:22
→ ninteen:更正,是把b變數的內容"複製"到f的c變數去 12/11 04:24
推 walm20:感謝~ 12/11 11:13
推 Lordaeron:照定義C 一樣沒有call by reference,拿C 來說嘴就有題了 12/11 13:13