gpt4 book ai didi

c - 尝试在嵌入式 C 中将二维数组转换为一维

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:39 25 4
gpt4 key购买 nike

因为我发现在 C 中操作二维数组非常困难,所以我决定尝试编写一个函数,将我的二维数组转换为一维数组。对于下面的 2D 数组,我希望它转换为类似 1D_array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 .

我在堆栈交换上遇到了一个非常相似的问题,链接如下,并使用了建议的代码。

Convert 2D array to single array

我使用的代码是:

#define KP_ROWS 4
#define KP_COLS 4

static Uint16 KP_TEST_Keys[KP_ROWS][KP_COLS] = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 },
{ 13, 14, 15, 16 }
};

void main()
{
Uint16 array1D[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
memcpy(array1D, KP_TEST_Keys, sizeof(Uint16) * KP_ROWS * KP_COLS);
}

同样,我的总体目标是将二维数组转换为一维数组。

编辑:清除之前的错误后,我编辑并刚刚测试了上面的代码并且它有效! array1D 包含我想要的格式的数据。

最佳答案

Am I using memcpy correctly?

好的,但容易失败,因为 array1D 的大小不一定与 KP_TEST_Keys 的大小相关联。

Uint16 array1D[KP_ROWS*KP_COLS] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ;

// Recommend size of destination, not size of source
// Ideally, it would be the minimum of the size of source and destination.
memcpy(array1D, KP_TEST_Keys, sizeof array1D);

作为@Kurokawa Masato注释,memcpy() 必须在函数中使用。


建议使用标准类型,如 uint16_t 而不是 Uint16

关于c - 尝试在嵌入式 C 中将二维数组转换为一维,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35963718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com