Nic*_*dlo 11 c arrays struct initialization
我有一个结构,里面有几个数组.数组的类型为unsigned char [4].
我可以通过调用初始化每个元素
struct->array1[0] = (unsigned char) something;
...
struct->array1[3] = (unsigned char) something;
Run Code Online (Sandbox Code Playgroud)
只是想知道是否有办法在一行中初始化所有4个值.
解决方案:我需要创建一个临时数组,其中所有值都已初始化,然后调用memset()将值复制到struct数组中.
Car*_*rum 28
如果你的意思是"初始化",你可以在声明变量时这样做,那么请确保:
struct x {
unsigned char array1[4];
unsigned char array2[4];
};
struct x mystruct = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 }
};
Run Code Online (Sandbox Code Playgroud)
Set*_*gie 12
创建结构时,可以使用聚合初始化对其进行初始化:
struct test {
int blah;
char arr[4];
};
struct test = { 5, { 'a', 'b', 'c', 'd' } };
Run Code Online (Sandbox Code Playgroud)
如果值相同,您可能会执行类似的操作
struct->array[0] = struct->array[1] = struct->array[2] = struct->array[3] = (unsigned char) something;
Run Code Online (Sandbox Code Playgroud)
否则,如果值存储在数组中,则可以使用memcpy函数
memcpy(struct->array, some_array, sizeof(struct->array));
Run Code Online (Sandbox Code Playgroud)