c - 获取一个二维数组并将其合并为一个

标签 c arrays memory-layout

我正在尝试弄清楚如何将二维数组合并为一个。

我有一个二维数组,如下所示:

#include <stdio.h>

#define ROW 2
#define COL 10

int
main(void)
{
  int array[ROW][COL] = {2,6,12,18,23,55,57,58,59,60} , {1,3,5,9,11,19,27,28,31,56};
}

我试图使用嵌套的 for 循环,但没有任何运气。

最佳答案

这样做:

#include <string.h> /* for memcpy() */

#define ROW (2)
#define COL (10)

int main(void)
{
  int array[ROW][COL] = {
    {  2,  6, 12, 18, 23, 55, 57, 58, 59, 60}, 
    {  1,  3,  5,  9, 11, 19, 27, 28, 31, 56}
  };

  int array1D[ROW*COL];
  memcpy(array1D, array, ROW*COL * sizeof(int));
}

在 C 语言中,数组元素保证以连续的方式放置在内存中(无填充!)。所以简单地复制内存就可以了。

关于c - 获取一个二维数组并将其合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56996863/

相关文章:

c - 遇到文件 I/O 和字符串数组的问题

arrays - MATLAB:用递增的数字填充数组

jquery - 更改段落中随机字母的颜色

enums - 为什么这个 Rust 枚举没有变小?

c++ - 使用 g++ 编译器打印 C++ 对象的布局

c - http 套接字请求返回尾随字符

c - Linux 内核中的 stdlib.h 替代品?

c - union 数据存储如何工作。得到令人困惑的输出

c - C 中指针比较如何工作?可以比较不指向同一数组的指针吗?

c - 寻找邻居的扫雷算法?