【发布时间】:2010-10-27 09:17:49
【问题描述】:
我正在调试一个网络应用程序。
我必须模拟一些交换的数据才能使应用程序正常工作。在 C++ 中,您可以执行类似的操作
char* myArray = { 0x00, 0x11, 0x22 };
但是,我似乎找不到这种语法的 C 等效项。
基本上我只想用硬编码值填充一个数组。
【问题讨论】:
我正在调试一个网络应用程序。
我必须模拟一些交换的数据才能使应用程序正常工作。在 C++ 中,您可以执行类似的操作
char* myArray = { 0x00, 0x11, 0x22 };
但是,我似乎找不到这种语法的 C 等效项。
基本上我只想用硬编码值填充一个数组。
【问题讨论】:
你可以在 C 中做同样的事情,但你应该声明它的类型为char[],而不是char*,这样你就可以使用sizeof 运算符来获取它的大小:
char myArray[] = { 0x00, 0x11, 0x22 };
size_t myArraySize = sizeof(myArray); // myArraySize = 3
【讨论】:
为了完整起见,对于 C99,您还可以使用复合文字:
char *myArray = (char []) {0x00, 0x11, 0x22 };
如果需要与 C++ 的源代码兼容性,则最好不要使用此构造,因为它是 - afaik - 不是 C++ 标准的一部分。
【讨论】:
尝试:
char myArray[] = { 0x00, 0x11, 0x22 };
【讨论】:
没有
char myArray[] = {0x00, 0x01,0x02};
工作?
【讨论】:
char myArray[] = {0x00, 0x11, 0x22};
【讨论】: