我想把三个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];

所以,现在我想把ary2A,ary2B,ary2C复制到ary1中。我怎么能用Pointern做这个??
我的第一步是:
(*ary1)[4] = *ary2A;

但这是错误的,因为我说ary1第一个块的地址是0.1。。
如果我说
(*ary1)[4] = ary2A;

我变成了一个错误:“从不兼容的类型'double[4]'分配给'double'”
我怎样才能解决这个问题?我想检查一下原理。。

最佳答案

ary1[0] = ary2A;将在ary2A的索引处存储0
不编译
ary1将在ary1[1] = ary2B;的索引处存储ary2B
不编译
等。
代码中有两个问题:
您正在将double数组存储为double
将索引1索引为大小为ary1的数组,超出了界限。
如果要创建数组的真实副本,则需要执行内存副本。你可以:

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

这将把44s的字节从4复制到double中。
memcpy(ary1[1], ary2B, sizeof(double) * 4);

这将把4ary2As的字节从ary1[0]复制到double中。
等。。。

09-07 10:00