Java 字节[]接收字节=新字节[缓冲区];
我需要以下代码行的帮助。我正在用C编写代码,我需要用Java替换下面的代码行。 因此,请帮助我,并建议我如何修改我的C代码的一些替代方案。我在等一行代码。 谢谢Java 字节[]接收字节=新字节[缓冲区];,java,c,Java,C,我需要以下代码行的帮助。我正在用C编写代码,我需要用Java替换下面的代码行。 因此,请帮助我,并建议我如何修改我的C代码的一些替代方案。我在等一行代码。 谢谢 byte[] receiverByte = new byte[BUFFER]; 如果使用C++编译器,则为: char* receiverByte = new char[BUFFER_SIZE ]; C中的else: char* receiverByte = malloc( BUFFER_SIZE ); 请记住,C不像Java那样
byte[] receiverByte = new byte[BUFFER];
如果使用C++编译器,则为:
char* receiverByte = new char[BUFFER_SIZE ];
C中的else:
char* receiverByte = malloc( BUFFER_SIZE );
请记住,C不像Java那样是内存管理的,因此在完成后需要调用delete来释放内存:
所以对于C++:
delete[] receiverByte;
对于C:
free( receiverByte );
还可以在堆栈上创建固定大小的数组。必须在编译时指定大小缓冲区大小,并且向量大小不能更改或增长:
char receiverByte[BUFFER_SIZE];
<>编辑:如果你使用C++编译器,你也可以访问STL库,它不需要直接使用NeX[]和Dele[]:< /P>
#include <vector>
...
std::vector<char> receiverByte;
receiverByte.resize( BUFFER_SIZE );
#包括
...
std::向量接收器字节;
receiverByte.resize(缓冲区大小);
如果使用C++编译器,则为:
char* receiverByte = new char[BUFFER_SIZE ];
C中的else:
char* receiverByte = malloc( BUFFER_SIZE );
请记住,C不像Java那样是内存管理的,因此在完成后需要调用delete来释放内存:
所以对于C++:
delete[] receiverByte;
对于C:
free( receiverByte );
还可以在堆栈上创建固定大小的数组。必须在编译时指定大小缓冲区大小,并且向量大小不能更改或增长:
char receiverByte[BUFFER_SIZE];
<>编辑:如果你使用C++编译器,你也可以访问STL库,它不需要直接使用NeX[]和Dele[]:< /P>
#include <vector>
...
std::vector<char> receiverByte;
receiverByte.resize( BUFFER_SIZE );
#包括
...
std::向量接收器字节;
receiverByte.resize(缓冲区大小);
如果将缓冲区定义为宏:
#define BUFFER 1234
unsigned char receiveBuffer[BUFFER];
或使用动态分配:
第一个示例也是如此。如果将缓冲区定义为宏:
#define BUFFER 1234
unsigned char receiveBuffer[BUFFER];
unsigned char receiverByte[BUFFER];
或使用动态分配:
第一个例子也是如此
unsigned char receiverByte[BUFFER];
或
以及:
但是这里的动态数组将更加复杂(测试NULL)
编辑::
#包括
尺寸3(整数n)
{
字符b[n+3];//可变长度数组
返回sizeof b;//执行时间sizeof
}
int main()
{
大小;
size=fsize3(10);//fsize3返回13
返回0;
}
或
以及:
但是这里的动态数组将更加复杂(测试NULL)
编辑::
#包括
尺寸3(整数n)
{
字符b[n+3];//可变长度数组
返回sizeof b;//执行时间sizeof
}
int main()
{
大小;
size=fsize3(10);//fsize3返回13
返回0;
}
我建议使用无符号字符*
,因为它类似于C中的一个字节。因此:
unsigned char* receiverByte = malloc(BUFFER * sizeof(unsigned char));
或
我建议使用无符号字符*
,因为它类似于C中的一个字节。因此:
unsigned char* receiverByte = malloc(BUFFER * sizeof(unsigned char));
或
如果“buffer_SIZE”不是一个常量值,这将不起作用,而对于C
则需要一个宏。对于C++,不应该使用新的、免费的、简单的使用STD::vector或STD::ARayy注释是基于这个答案的以前版本,并且自从呈现“MOFTITE”就不起作用了,如果“BuffFixSead”不是一个常量值,对于<代码> C <代码>将需要一个宏。对于C++,你不应该使用新的和免费的、简单的使用STD::vector或STD::ARayy注释是基于这个答案的以前版本,并且已经被渲染了MOOTU不应该键入分配的返回(或者参数到免费< /代码>函数)。静态双精度[]卫星数据=新双精度[19][4];静态双精度[]卫星数据未使用=新双精度[19][4];静态双精度[]sbas_数据=新双精度[4][2];此外,我还需要将以下行从java转换为cHowever,我认为您应该在malloc参数中乘以sizeof(unsigned char)。@user1954391请更新您的问题。。。您的代码段在注释中不可读(并且它不属于注释中)。您不应键入分配返回(或free
函数的参数)。您不需要从malloc强制转换!静态双精度[]卫星数据=新双精度[19][4];静态双精度[]卫星数据未使用=新双精度[19][4];静态双精度[]sbas_数据=新双精度[4][2];此外,我还需要将以下行从java转换为cHowever,我认为您应该在malloc参数中乘以sizeof(unsigned char)。@user1954391请更新您的问题。。。你的代码片段在评论中不可读(它不属于那里),你真的想要C
而不是C++
?那么,你想要Java代码作为答案吗?似乎大多数答案都错了。你真的想要C
而不是C++
?那么,你想要Java代码作为答案吗?似乎大多数答案都错了。还应该补充一点,如果缓冲区不是编译时常量,第一种情况将不起作用。如果大小是固定的,并且在编译时就知道了,那么您就应该这样做。@Crog:您可能会感到惊讶。瞧,你说得很对,我确实记得这件事,但忽略了它。作为Visual Studio用户,我们没有获得所有/任何C99标准支持:(还应添加第一种情况,如果缓冲区不是编译时常数,则第一种情况不起作用。如果大小在编译时是固定的且已知的,则您应该这样做。@Crog:您可能会感到惊讶。请看EDITYou,您是非常正确的,我确实记得这一点,但忽略了它。作为Visual Studio用户,我们没有获得所有/任何C99标准支持:(