1

我正在尝试以下列方式初始化我的数组,但出现表达式语法错误:

int LineOne[ARRAY_LENGTH];//where ARRAY_LENGTH is a constant of length 10
if(SOME_CONDITION_IS_TRUE){
LineOne[ARRAY_LENGTH] = {0,1,0,0,1,1,1,0,1,1};
}
4

3 回答 3

1

您不能在“经典”C 中使用数组文字,除非在定义变量时作为初始值设定项。

在 C99 中,您可以使用复合文字来执行此操作,但您必须在文字之前在类似强制转换的表达式中重复该类型:

LineOne = (int[ARRAY_LENGTH]) { 0,1,0,0,1,1,1,0,1,1 };
于 2012-12-02T11:19:38.537 回答
1

这真的取决于代码的其余部分(你想如何使用数组),什么解决方案是最好的。另一种方法可能是......

int* LineOne = 0;
if(SOME_CONDITION_IS_TRUE) {
    static int* init = {0,1,0,0,1,1,1,0,1,1};
    LineOne = init;
}
于 2012-12-02T11:26:00.520 回答
0

你不能那样做。您可以使用备用数组并复制它:

#include <string.h>
…
int values[] = {0,1,0,0,1,1,1,0,1,1};

int LineOne[ARRAY_LENGTH];//where ARRAY_LENGHT is a constant of length 10
if(SOME_CONDITION_IS_TRUE)
    memcpy(LineOne, values, sizeof(values));
于 2012-12-02T11:21:10.973 回答