初始化结构中的数组值

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)

  • Gotcha - 然后你可以使用`memset()`将它们全部设置为相同的值,或者创建一个模板数组和`memcpy()`如果你想让它们不同的话.除此之外,您可以做的就是逐个分配它们. (3认同)

Set*_*gie 12

创建结构时,可以使用聚合初始化对其进行初始化:

struct test {
    int blah;
    char arr[4];
};

struct test = { 5, { 'a', 'b', 'c', 'd' } };
Run Code Online (Sandbox Code Playgroud)


heh*_*les 7

如果值相同,您可能会执行类似的操作

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)