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

时间:2019-03-18 23:17:37

标签: 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的第一个块的地址为值0.1。 如果我说

(*ary1)[4] = ary2A;

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

我该如何解决这个问题?我想检查一下原理。

1 个答案:

答案 0 :(得分:2)

ary1[0] = ary2A;ary2A存储在0的索引ary1上。 不要编译

ary1[1] = ary2B;ary2B存储在1的索引ary1上。 不要编译

您的代码中有两个问题:

  • 您正在将一个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]

等...