我尝试按以下方式初始化我的数组但得到表达式语法错误:
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};
}
答案 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));