16

我对什么是文字数组的定义可能是错误的。我将以下内容称为一个:

{0x00, 0x01, 0x03}

我有一个接受数组的函数,如下所示:

void mote(char arry[]){}

当我调用此函数时,我希望能够执行以下操作:

mote({0x00, 0x01, 0x03})

但是我的编译器(C30)抱怨以下错误:

error: syntax error before '{' token

我也用这些括号-> []尝试了上面的方法,但我仍然得到同样的错误。

我的问题

1)是否可以将文字数组传递给函数?

2)如果是,如何?

谢谢大家

4

2 回答 2

29

这种语法称为数组初始值设定项。因此,它只能在定义数组时使用。

C11 (n1570),第 6.7.9 节初始化

initializer:
    assignment-expression
    { initializer-list }
    { initializer-list , }

但是,在 C99 中,可以使用复合文字

mote((char[]){0x00, 0x01, 0x03});
于 2013-04-19T12:39:06.620 回答
9

如果不支持 C99,试试这个:

char cp[] = {0x01, 0x02, 0x03};
mote (cp);
于 2013-04-19T12:45:20.727 回答