C 中的文字数组

问题描述 投票:0回答:2

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

{0x00, 0x01, 0x03}

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

void mote(char arry[]){}

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

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

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

error: syntax error before '{' token

我也尝试使用这些括号 -> [ ] 进行上述操作,但我仍然遇到相同的错误。

我的问题

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

2)如果是,怎么做?

先谢谢大家了

c
2个回答
34
投票

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

C11 (n1570),第 6.7.9 节初始化

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

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

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

10
投票

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

char cp[] = {0x01, 0x02, 0x03};
mote (cp);
© www.soinside.com 2019 - 2024. All rights reserved.