2013-09-23 52 views
-1

我有从CPP转换为Java的代码。尽管几乎所有的事情都很混乱,但从未在CPP上发挥过作用。从CPP转换为Java(dp = 1)

我想了解以下CPP代码,我怎么能代表它在Java中:

UInt8* data; 
memcpy(data, rawData, rawDataLen); 
UInt8* dp = data; 
dp += 8; //Is it updating the Array Index? 
char buf[256]; 
sizeof(buf) //Can I take it as Length? 

请建议。

+2

第一步就是意识到这不是C++而是C代码。 – LihO

+0

好的可能是因为文件扩展名而被认为是C++。 – JavaAster

+3

那里有许多奇怪的人,他们在扩展名为.cpp的文件中编写C代码,将其编译为C++,如果编译成功,他们声称自己是C++程序员。 – LihO

回答

2

第一个问题:

dp += 8; 

是这台位置的指针在阵列了。所以在java中它意味着你更新你的数组索引。

向该第二:

sizeof(buf); 

的sizeof返回的字节数,而不是元件的数量。所以在你的情况下,它确实是长度,但只有,因为sizeof(char) = 1。这取决于系统。例如大多数系统上的sizeof(short) = 2。因此,如果您的buf是短阵列,则在大多数情况下,sizeof(buf)将等于长度的两倍。

+0

并且'System.arraycopy()'拷贝数组数据。 –

+1

'sizeof'并不是真正的字节数。该标准规定'sizeof(char)== 1'必须成立。所以你的声明在大多数系统上都是如此(char是一个字节),但是它是由实现定义的。 – StoryTeller

+0

@StoryTeller - C++语言定义中的“字节”相当于'char'。 –