我想将三个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'”
我该如何解决这个问题?我想检查一下原理。
答案 0 :(得分:2)
不要编译ary1[0] = ary2A;
将ary2A
存储在0
的索引ary1
上。
不要编译ary1[1] = ary2B;
将ary2B
存储在1
的索引ary1
上。
等
您的代码中有两个问题:
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]
。
等...