将三个数组复制到 C 中的 2 个暗数组

标签 c arrays copy

我想将三个 1dim 数组复制到一个 2dim 数组(矩阵)。

double ary2A[4] = { 0.1, 1.1, 2.1, 3.1 };
double ary2B[4] = { 0.2, 1.2, 2.2, 3.2 };
double ary2C[4] = { 0.3, 1.3, 2.3, 3.3 };

double ary1[3][4];

所以,现在我想在 ary1 中复制 ary2A、ary2B、ary2C。我怎样才能用 Pointern 做到这一点?

我的第一步是:

(*ary1)[4] = *ary2A;

但这是错误的,因为我说从 ary1 的第一个 block 开始的地址是值 0.1.. 如果我说

(*ary1)[4] = ary2A;

我变成了一个错误:“从不兼容的类型‘double[4]’分配给‘double’”

我该如何解决这个问题??我想看看原理..

最佳答案

ary1[0] = ary2A; 会将 ary2A 存储在 ary1 的索引 0 处。 不编译

ary1[1] = ary2B; 会将 ary2B 存储在 ary1 的索引 1 处。 不编译

等等

代码中的两个问题:

  • 你正在将一个 double 数组存储到一个 double 中
  • 您正在将索引 4 编入大小为 4 的数组,您超出了范围。

如果要创建数组的真实副本,则需要执行内存复制。你可以这样做:

memcpy(ary1[0], ary2A, sizeof(double) * 4);

这会将 4 个 double 的字节从 ary2A 复制到 ary1[0]

memcpy(ary1[1], ary2B, sizeof(double) * 4);

这会将 4 个 double 的字节从 ary2B 复制到 ary1[1]

等...

关于将三个数组复制到 C 中的 2 个暗数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55231457/

相关文章:

c++ - 如何计算我的数组条目条目号

javascript - Google 表格将一个单元格更改为另一个单元格

c - '_IO(...)' 在 Linux 的 C 头文件中意味着什么?

c - NDIS 钩子(Hook) sendPacketsHandler

c - 我无法使用 scanf 将值放入动态分配的数组的元素中?

php - 替换数组值倍数

c - 尝试将 openldap 移植到 Windows 时出现错误 LNK2019 无法解释

arrays - R:在大数组中查找最接近的值并返回维度

c++ - 复制构造函数如何工作?

c++ - 从方法中按值返回类类型的变量