java参数传递的简单问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:25:18
Instruction iMem = new Instruction[10];
for(int i =0;i<m_insCnt;i++)
retrieveIns(iMem[i],d,offset);
==================
private int retrieveIns(Instruction ins, byte[]data, int o)
{
....
ins = new Instruction(tmp,pcnt);
return consumed;
}
===================
这样的调用似乎不合法,请问,retrieveIns(Instruction ins, byte[]data, int o)这里的ins形参我给它iMem[i]对象做实参,是否可以达到更改iMem[i]的目的。
这么快就给答案了,先谢谢。
其实我想要达到的目的十分简单。就是希望在Instruction iMem = new Instruction[10]; 后面将每个对象当作参数放到一个方法里处理,通过计算一些数值,这些数值当作创建Instruction对象的参数,就如上面你看到的tmp和pcnt,最后得到一个对象,这个对象就是Instruction[10]里的元素。另外方法还要返回一个数值,所以不希望retrieveins方法返回一个对象。
但是,那位兄弟,我做了一下输出,作为参数传进去的是个null,在调用方法后iMem[i]依然是个null

不知道要怎么样才算更改iMem[i]?
因为instruction ins这里传进去的是iMem[i]的一个引用,其实相当于一个地址。所以是可以更改的楼主在方法里边做了一个
ins = new Instruction(tmp,pcnt);
就是为这个引用分配了一个内存空间,此是ins指向的是另一片新的内存,也就是说,使得iMem[i]指向了一个内存空间。
但在这之前作了一个Instruction iMem = new Instruction[10]; ,并没有分配空间,只是声明了一个引用,所以这就相当于为iMem这个数组的每一个元素分配了内存。
我不太清楚楼主需要什么样的结果??

对于补充的回答:
完全可以的,楼主这么做,其实就相当于指针在运作罢了。

可以.