C中的硬编码字节数组

时间:2009-05-19 16:08:14

标签: c arrays syntax

我正在调试网络应用程序。

我必须模拟一些交换的数据才能使应用程序正常工作。在C ++中,您可以执行类似

的操作
char* myArray = { 0x00, 0x11, 0x22 };

但是,我似乎找不到这种语法的C等价物。

基本上我只想用硬编码值填充数组。

5 个答案:

答案 0 :(得分:37)

您可以在C中执行相同的操作,但是您应该将其声明为char[],而不是char*,以便您可以使用sizeof运算符来获取其大小:

char myArray[] = { 0x00, 0x11, 0x22 };
size_t myArraySize = sizeof(myArray);  // myArraySize = 3

答案 1 :(得分:5)

尝试:

char myArray[] = { 0x00, 0x11, 0x22 };

答案 2 :(得分:5)

为了完整起见,使用C99你也可以使用复合文字:


    char *myArray = (char []) {0x00, 0x11, 0x22 };

如果要求与C ++的源代码兼容,最好不要使用此构造,因为它是 - afaik - 不是C ++标准的一部分。

答案 3 :(得分:2)

char myArray[] = {0x00, 0x01,0x02};

工作?

答案 4 :(得分:2)