C中的硬编码字节数组

Eri*_*ric 22 c arrays syntax

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

我必须模拟一些交换的数据才能使应用程序正常工作.在C++中,你可以做类似的事情

char* myArray = { 0x00, 0x11, 0x22 };
Run Code Online (Sandbox Code Playgroud)

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

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

Ada*_*eld 44

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

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

  • 请注意,您还应该在C++中使用"char foo []"语法 (8认同)

jbr*_*ric 5

试试:

char myArray[] = { 0x00, 0x11, 0x22 };
Run Code Online (Sandbox Code Playgroud)


qui*_*ars 5

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


    char *myArray = (char []) {0x00, 0x11, 0x22 };
Run Code Online (Sandbox Code Playgroud)

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