Re: [問題] 有關於 Java 的指標

看板java作者 (Alien)時間10年前 (2013/08/01 09:32), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《lairrol (Hammer)》之銘言: : 想請問一下在 Java 中沒有類似 C/C++ 中 & 的用法嗎? : 小弟我在學 C/C++ 可以做下面這樣的事 : 可以利用 & 做傳址給副程式做一些運算 : #include <iostream> : using namespace std; : void add(int &a, int &b) : { : a++; : b++; : } : int main(void) : { : int a = 1, b = 1; : cout << a << b << endl; : add(a,b); : cout << a << b << endl; : } : 但是小弟在學 Java 的時候無法用 & 來做類似的事 : 查了一下版上的資料有討論到這部份的問題 : 我還是有點難理解 Java 中沒有 & 這種事.... 首先,& 在 C/C++ 中有多種用途。你的例子的用法正正 *不是* C/C++ 共有的用法。& reference 只在 C++ 有,在 C 裡是沒有的。 簡單來說,Java 沒有這種 reference 的概念。 你要是懂 C 的話就好辦。Java 與 C 一樣,只有 pass-by-value. 在 primitive type 的情況下,用C 的方法去理解就好。特別的地 方在於非 primitive type. Java 中的 Foo foo; 其實差不多可以理解為 C/C++ 的 pointer. 即是 Foo* foo 所以假如有一 Java 的 method 長這樣: void Bar(Foo foo) 其實就等同於 C/C++ 的 void Bar(Foo* foo) 要怎麼利用這種等性去做到類似pass-by-ref 的效果,懂 C/C++ 的話我想你大概就心中有數了。 簡單來說,最多只做到有點類似的效果,沒法達成 C++ 的 reference 等同的效果。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 223.19.42.175

08/01 11:52, , 1F
看了大家的回應大概有個底了~感謝!!
08/01 11:52, 1F
文章代碼(AID): #1H-RhA8B (java)
文章代碼(AID): #1H-RhA8B (java)