我正试图将一个二维数组复制到另一个二维数组。由于名称(srcAry)是源数组的第一个元素的地址,因此我已经能够在for循环中使用指针算术打印出源数组中的所有值。我使用行数乘以列数作为停止循环的条件。如果我尝试使用此方法将值赋给新数组,我会得到一条错误消息(错误:赋值给具有数组类型的表达式)。这是可能做到这一点,或者我限制使用两个嵌套的for循环与索引?…
void copyAry(double *pAry, int numRows, int numCols)
{
double newAry[numRows][numCols];
int end = numRows * numCols;
int ctr = 0;
for( ; ctr < end; ctr++)
// printf("*(pAry + %d) = %.1fn", ctr, *(pAry + ctr)); //this works fine
{
*(newAry + ctr) = *(pAry + ctr); //this is where I receive error
}
return;
}
…提前谢谢。
我假设newAry + ctr
的类型不是您的代码假设的double*
,而是double*[numCols]
,即指向numCols
元素数组的指针。这也意味着你不能一次推进一个元素,而是推进numCols
。
对于这种低级别的数据复制,通常使用memcpy
。除此之外,您可以从double* pNewAry = &newAry[0][0]
或其他类似的开始,以便将2d数组测试为双精度数的线性序列。