c - 如何在C中将数组拆分为两个数组

标签 c arrays split memcpy

假设我在 C 中有一个数组

int array[6] = {1,2,3,4,5,6}

我怎么能把它分成

{1,2,3}

{4,5,6}

这可以使用 memcpy 吗?

谢谢你,

诺诺诺

最佳答案

当然。直接的解决方案是使用 malloc 分配两个新数组,然后使用 memcpy 将数据复制到两个数组中。

int array[6] = {1,2,3,4,5,6}
int *firstHalf = malloc(3 * sizeof(int));
if (!firstHalf) {
  /* handle error */
}

int *secondHalf = malloc(3 * sizeof(int));
if (!secondHalf) {
  /* handle error */
}

memcpy(firstHalf, array, 3 * sizeof(int));
memcpy(secondHalf, array + 3, 3 * sizeof(int));

但是,如果原始数组存在的时间足够长,您甚至可能不需要这样做。您可以通过使用指向原始数组的指针将数组“拆分”为两个新数组:

int array[6] = {1,2,3,4,5,6}
int *firstHalf = array;
int *secondHalf = array + 3;

关于c - 如何在C中将数组拆分为两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850000/

相关文章:

arrays - 有没有办法将 2D 数组传递到 pthreads 函数中?

c - autoconf 实际上为 AC_CHECK_FUNCS 功能运行了什么

c - 访问结构体内部的数组时程序崩溃

python - Pandas :用列表分隔行的记录

java - 如何在Java中将输入文件拆分为单词?

c - 如何将特定线程的标准输出重定向到/dev/null?

C 预处理器计算最大 sizeof 结构

php - Laravel 从查询构建器获取特定列

arrays - 大型 VBScript 数组产生 'Out of Memory' 错误

php str_split() 每 n 个字符带重音符号