从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.