我遇到了以下代码:
memcmp(mac, (char []){0x01,0x00,0x5E}, 3)
也许它会起作用;以上述方式编写memcmp是否可以?感谢。
答案 0 :(得分:5)
是的,它会起作用,没问题,它与:
相同char arr[] = {0x01,0x00,0x5E};
memcmp(mac, arr, 3);
答案 1 :(得分:2)
是的,没关系。像这样匿名声明一个数组,被称为“复合文字”。它是使用C99标准在C语言中引入的功能,可以与遵循该标准的所有编译器一起使用。它不适用于像Visual C ++这样的非标准编译器。
然而,您应该考虑将其声明为const char
,这将更正确并且还可以导致更好的优化,因为const
可能使编译器/链接器更容易将数组放入静态ROM而不是堆栈。
答案 2 :(得分:0)
在这种情况下,数组与指针(关键字“数组到指针衰减”)的关系并没有什么不同。
由于C允许您以这种方式定义临时数组,因此您可以使用此表示法来测试编译时已知的一组值,使其位于mac
数组中。