C中的文字数组

时间:2013-04-19 12:35:50

标签: c

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

{0x00, 0x01, 0x03}

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

void mote(char arry[]){}

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

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

然而,我的编译器(C30)抱怨以下错误:

error: syntax error before '{' token

我也用这些括号尝试了上述内容 - > []但我仍然得到同样的错误。

我的问题

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

2)如果是,怎么样?

提前谢谢大家

2 个答案:

答案 0 :(得分:12)

此语法称为数组初始化程序。因此,只有在定义数组时才能使用它。

  

C11(n1570),§6.7.9初始化

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

但是,在C99中,可以使用复合文字来完成:

mote((char[]){0x00, 0x01, 0x03});

答案 1 :(得分:4)

如果不支持C99,请尝试以下方法:

char cp[] = {0x01, 0x02, 0x03};
mote (cp);