Java也可以通过''引用"来模拟,C语言的指针功能:
class DataPoint
{
public int m_currPos;
public int []m_data;
public int m_total_len;
public DataPoint()
{
m_currPos = 0;
m_total_len = 0;
}
public DataPoint(int []iniData)
{
int len = iniData.length;
m_total_len = len;
m_data = new int[ len ];
for(int i=0;i<len;i++)
{
m_data[i] = iniData[i];
}
m_currPos = 0;
}
public DataPoint(int []iniData,int len)
{
m_data = new int[ len ];
m_total_len = len;
for(int i=0;i<len;i++)
{
m_data[i] = iniData[i];
}
m_currPos = 0;
}
public DataPoint(DataPoint datClass)
{
int []iniData = datClass.m_data;
int len = datClass.m_total_len;
m_data = new int[ len ];
m_total_len = len;
for(int i=0;i<len;i++)
{
m_data[i] = iniData[i];
}
m_currPos = datClass.m_currPos;
}
public void setCurrValue(int v)
{
if(m_currPos>=m_total_len)
{
System.out.println("Error,setCurrValue:Index "+m_currPos+" out of Maxbounds="+m_total_len);
return;
}
m_data[m_currPos] = v;
}
public void pointPlusPlus()
{
m_currPos++;
}
public void setCurrValueByPos(int v,int pos)
{
m_currPos = pos;
m_data[m_currPos] = v;
}
public void setCurrValueByClass(DataPoint datClass)
{
int[] retDat = datClass.getAllData();
int len = retDat.length;
if( m_data!=null)
{
m_data = null;
m_data = new int[len];
}
for(int i=0;i<len;i++)
{
m_data[i] = retDat[i];
}
m_currPos = datClass.m_currPos;
m_total_len = len;
}
public void setCurrValueByNextPos(int v)
{
if(m_currPos>=m_total_len)
{
System.out.println("Error,setCurrValueByNextPos:Index "+m_currPos+" out of Maxbounds="+m_total_len);
return;
}
m_data[m_currPos] = v;
m_currPos++;
}
public int getCurrValue()
{
return m_data[m_currPos];
}
public int[] getAllData()
{
return m_data;
}
public int[] getDataFromPoint()
{
int len = m_total_len-m_currPos;
if(len<=0)
return null;
int []retDat = new int[len];
for(int i=0;i<len;i++)
{
retDat[i] = m_data[m_currPos+i];
}
return retDat;
}
}
public static void showHex(String info, int[] data)
{ //调试数据显示函数
int len = 0;
if(data!=null)
len=data.length;
String str="";
String buf="";
for(int i=0;i<len;i++)
{
buf = Integer.toHexString((short)(data[i])&0xff);
if( Integer.parseInt(buf,16)< 0x10 )
buf = "0"+buf;
str+= buf;
str+=" ";
}
System.out.println(info+"("+len+"): "+str);
}
==================Java=======================
int data_test[]={0,1,2,3,4};
DataPoint dat1 = new DataPoint(data_test);
DataPoint dat2 = dat1;
dat2.pointPlusPlus();
dat2.pointPlusPlus();
dat2.setCurrValue( 9 );
//然后查看dat1的数据会变成0,1,9,3,4
==================对照C=======================
int data_test[]={0,1,2,3,4};
int *dat1 = data_test;
int *dat2 = dat1;
dat2++;
dat2++;
*dat2 = 0x09;
//然后查看dat1的数据会变成0,1,9,3,4