C 快速声明和定义数组的字段
C Declare and define quickly the fields of an array
我有一个包含 7 个单元格数组的字段的结构,我想快速轻松地定义单元格的值。
有没有一种方法可以方便快捷地声明和定义这样的数组?
struct my_struct
{
uint8_t array[7];
}
struct my_struct var = {0};
memcpy(var.array, (uint8_t){0,1,2,3,4,5,6}, 7);
还是这样?
struct my_struct
{
uint8_t array[7];
}
struct my_struct var = {0};
var.array = (uint8_t)[]{0,1,2,3,4,5,6};
或者我必须这样做?
struct my_struct
{
uint8_t array[7];
}
struct my_struct var = {0};
var.array[0] = 0;
var.array[1] = 1;
var.array[2] = 2;
var.array[3] = 3;
var.array[4] = 4;
var.array[5] = 5;
var.array[6] = 6;
谢谢 ;)
数组和结构初始化器可以嵌套:
struct my_struct var = { {0,1,2,3,4,5,6} };
使用 compound literal.
您的第一次尝试很接近,但类型规范缺少使其成为数组类型的 []
。
memcpy(var.array, (uint8_t[]){0,1,2,3,4,5,6}, 7);
var.array = (uint8_t)[]{0,1,2,3,4,5,6};
你是说复合文字吗?
那么语法是 (uint8_t [])
而不是 (uint8_t)[]
但是你不能给数组赋值(Why are arrays not lvalues)。
你的第一个例子几乎是正确的:
memcpy(var.array, (uint8_t){0,1,2,3,4,5,6}, 7);
但同样,请使用正确的语法:
memcpy(var.array, (uint8_t []){0,1,2,3,4,5,6}, 7);
我有一个包含 7 个单元格数组的字段的结构,我想快速轻松地定义单元格的值。
有没有一种方法可以方便快捷地声明和定义这样的数组?
struct my_struct
{
uint8_t array[7];
}
struct my_struct var = {0};
memcpy(var.array, (uint8_t){0,1,2,3,4,5,6}, 7);
还是这样?
struct my_struct
{
uint8_t array[7];
}
struct my_struct var = {0};
var.array = (uint8_t)[]{0,1,2,3,4,5,6};
或者我必须这样做?
struct my_struct
{
uint8_t array[7];
}
struct my_struct var = {0};
var.array[0] = 0;
var.array[1] = 1;
var.array[2] = 2;
var.array[3] = 3;
var.array[4] = 4;
var.array[5] = 5;
var.array[6] = 6;
谢谢 ;)
数组和结构初始化器可以嵌套:
struct my_struct var = { {0,1,2,3,4,5,6} };
使用 compound literal.
您的第一次尝试很接近,但类型规范缺少使其成为数组类型的 []
。
memcpy(var.array, (uint8_t[]){0,1,2,3,4,5,6}, 7);
var.array = (uint8_t)[]{0,1,2,3,4,5,6};
你是说复合文字吗?
那么语法是 (uint8_t [])
而不是 (uint8_t)[]
但是你不能给数组赋值(Why are arrays not lvalues)。
你的第一个例子几乎是正确的:
memcpy(var.array, (uint8_t){0,1,2,3,4,5,6}, 7);
但同样,请使用正确的语法:
memcpy(var.array, (uint8_t []){0,1,2,3,4,5,6}, 7);