You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中无需使用循环将二维数组转换为一维数组的方法

如何不使用循环将二维数组的单行复制到一维数组

直接用标准库的memcpy函数就能实现,代码示例如下:

#include <string.h>

// 你的数组定义
int arr[1][18];
int ar[18];

// 核心复制操作
memcpy(ar, arr[0], sizeof(ar));

具体解释:

  • arr[0]是二维数组的第一行(也是你这个例子里唯一的一行),它在代码里会被隐式转换为指向该行第一个元素的指针,和一维数组ar的内存布局完全匹配——都是连续的18个int类型的内存块。
  • memcpy是C标准库提供的内存拷贝工具,它会直接按字节复制指定长度的内存区域,底层实现通常会用硬件指令优化,比手动写循环效率更高,而且不需要你自己处理循环逻辑。
  • sizeof(ar)在这里会返回整个一维数组的总字节数(也就是18 * sizeof(int)),用这个作为拷贝长度既安全又省事,避免手动计算出错。

注意事项:

  • 必须确保源和目标数组的元素类型一致(这里都是int,没问题),否则用memcpy会导致数据错乱。
  • 如果你的二维数组有多行(比如arr[5][18]),要复制第i行的话,只需要把源地址换成arr[i]就行。
  • 别直接用arr作为源地址,虽然它的地址值和arr[0]相同,但arr的类型是指向整个二维数组的指针(int (*)[18]),用arr[0]语义更清晰,也符合代码可读性要求。

内容的提问来源于stack exchange,提问作者quantax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:45:37