在memcmp中我们可以使用数组而不是指针

时间:2012-04-17 09:12:40

标签: c

我遇到了以下代码:

              memcmp(mac, (char []){0x01,0x00,0x5E}, 3)

也许它会起作用;以上述方式编写memcmp是否可以?感谢。

3 个答案:

答案 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数组中。