我想将三个 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/