作者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)
1F:推 walm20:请问是不是跟我原文下面讲的? 12/10 19:01
2F:推 TonyQ:c跟java定义的ref 有一点落差. 12/10 21:49
3F:→ sunneo:他传ref的态度是call by value,也就是你无法改ref本身 12/10 22:37
4F:推 sunneo:但你可以存取ref参照的内容 12/10 22:38
5F:推 Lordaeron:这种年经文又出现了. 12/11 00:11
6F:推 ninteen:三楼正解 12/11 04:20
7F:→ ninteen:基本上呼叫f()时,JAVA把a变数的内容"复制"到f的b变数去 12/11 04:22
8F:→ ninteen:更正,是把b变数的内容"复制"到f的c变数去 12/11 04:24
9F:推 walm20:感谢~ 12/11 11:13
10F:推 Lordaeron:照定义C 一样没有call by reference,拿C 来说嘴就有题了 12/11 13:13