【问题标题】:hardcode byte array in CC中的硬编码字节数组
【发布时间】:2010-10-27 09:17:49
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c arrays syntax


    【解决方案1】:

    你可以在 C 中做同样的事情,但你应该声明它的类型为char[],而不是char*,这样你就可以使用sizeof 运算符来获取它的大小:

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

    【讨论】:

    • 请注意,您也应该在 C++ 中使用“char foo[]”语法
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      尝试:

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

      【讨论】:

        【解决方案4】:

        没有

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

        工作?

        【讨论】:

          【解决方案5】:

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-06-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多