C中的整数数组初始化错误

时间:2012-12-02 11:17:50

标签: c

我尝试按以下方式初始化我的数组但得到表达式语法错误:

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};
}

3 个答案:

答案 0 :(得分:1)

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

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

LineOne = (int[ARRAY_LENGTH]) { 0,1,0,0,1,1,1,0,1,1 };

答案 1 :(得分:1)

这实际上取决于代码的其余部分(如何使用数组),哪种解决方案最好。另一种方法可能是......

int* LineOne = 0;
if(SOME_CONDITION_IS_TRUE) {
    static int* init = {0,1,0,0,1,1,1,0,1,1};
    LineOne = init;
}

答案 2 :(得分: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));