int?*a;
a?=?&b;C和java都是初學(xué)者水平的在下,目前正在做將一個(gè)C程序移植到j(luò)ava的工作,很多指針功能不知道如何在java中實(shí)現(xiàn),希望有大神能幫忙解答!最好解釋一下原理!小弟萬分感謝!
1 回答
已采納

阿旭_
TA貢獻(xiàn)217條經(jīng)驗(yàn) 獲得超353個(gè)贊
在java中沒有指針的概念,倒是有個(gè)引用的類似概念,
相同點(diǎn)是都是保存地址,不同點(diǎn)是C中的地址可能通過int型來保存,java中的地址必須是Object類型。
換話句說,java中保存地址的只能是Object類型,而C中int型即可以保存地址(指針)又可以保存一個(gè)數(shù)值。
簡單講要實(shí)現(xiàn)這樣一個(gè)功能,java寫起來會(huì)比較復(fù)雜,但是如果熟練起來會(huì)覺得比C好理解不容易出錯(cuò)。
以你問的為例。代碼如下。
public?class?Test23?{ public?int?c?=?5; public?static?void?main(String[]?args)?{ Test23?b?=?new?Test23(); Test23?a?=?null;//?如果寫成int,就只能保存值,而不能保存地址了。 a?=?b;//?地址只能保存其它地址 /*?這里用c的輸出格式給你演示,方便你理解,但通常java是不用這種輸出格式的,而是System.out.println(a.c);即可?*/ System.out.printf("%d",?a.c); } }
添加回答
舉報(bào)
0/150
提交
取消