从C中的另一个数组初始化一个数组

我想用另一个数组中设置的值初始化一个数组,例如:

uint8_t array_1[] = {1, 2, 3};

uint8_t array_2[] = array_1;

当然这行不通,因为 array_1 被认为是一个指针。我正在试图做的是要能够静态初始化array_2与价值array_1,而无需使用memset

由于在我的情况下 array_1 和 array_2 将是常量全局缓冲区,我相信应该有一种方法可以做到这一点,但我还没有弄清楚如何或通过使用定义,但如果可能的话,我宁愿坚持使用其他解决方案.

谢谢

回答

除了使用#define或重复初始化程序之外,没有什么特别优雅的方法可以在 C 编译时做到这一点。最简单的版本:

uint8_t array_1[] = {1, 2, 3};
uint8_t array_2[] = {1, 2, 3};

或者

#define INIT_LIST {1, 2, 3}

uint8_t array_1[] = INIT_LIST;
uint8_t array_2[] = INIT_LIST;

虽然如果你使用结构体,你可以这样做:

typedef struct
{
  int arr [3];
} array_t;

array_t array_1 = { .arr = {1,2,3} };
array_t array_2 = array_1;

但这只有在这些是本地对象时才有效,这本质上等同于调用memcpy.


以上是从C中的另一个数组初始化一个数组的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>