我正在尝试交换两个新旧二维数组。我想调用一个函数copyNewToOld
,而不实际复制值。我只想对旧的引用指向新的位置,对新的引用指向旧的。
所以我可以这样初始化:
float oldMesh[SIZE][SIZE] = {0};
float newMesh[SIZE][SIZE] = {0};
像这样调用:
copyNewToOld(&newMesh, &oldMesh);
并以这样的方式实现:
void copyNewToOld(float *(new[][SIZE]), float *(old[][SIZE])){
float **temp;
temp = *new;
*new = *old;
*old = temp;
temp = NULL;
}
但是,该实现不会交换指针,我只是继续一遍又一遍地覆盖数据。
我是否错过了一些直截了当的东西?
更新代码:
float oldMesh[DIM + 2][DIM + 2] = {0};
float newMesh[DIM + 2][DIM + 2] = {0};
float **newTemp, **oldTemp
for(i = 0; i < iterations; i++){
newTemp = &newMesh;
oldTemp = &oldMesh;
copyNewToOld(&newTemp, &oldTemp);
calculateNew(newMesh, oldMesh, xsource, ysource);
}
与 copyNewToOld 为:
void copyNewToOld(float ***new, float ***old){
float **temp;
temp = *new;
*new = *old;
*old = temp;
}