代码之家  ›  专栏  ›  技术社区  ›  Eric

C语言中的硬编码字节数组

  •  18
  • Eric  · 技术社区  · 15 年前

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

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

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

    然而,我似乎找不到这个语法的C等价物。

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

    5 回复  |  直到 10 年前
        1
  •  34
  •   Adam Rosenfield    15 年前

    您可以在C中执行相同的操作,但应该声明它的类型为 char[] 不是 char* ,以便您可以使用 sizeof 操作员:

    char myArray[] = { 0x00, 0x11, 0x22 };
    size_t myArraySize = sizeof(myArray);  // myArraySize = 3
    
        2
  •  5
  •   jbradaric    15 年前

    尝试:

    char myArray[] = { 0x00, 0x11, 0x22 };
    
        3
  •  5
  •   quinmars    15 年前

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

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

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

        4
  •  2
  •   Tom    15 年前

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

    工作?

        5
  •  2
  •   none    15 年前