gpt4 book ai didi

c - 通过切换指针来交换二维数组

转载 作者:行者123 更新时间:2023-11-30 14:53:37 25 4
gpt4 key购买 nike

我最初有代码:

double **u_new,**u;

for(iy=0;iy<Ny;iy++) {
for(ix=0;ix<Nx;ix++) {
u[ix][iy] = u_new[ix][iy];
}
}

这里 u 和 u_new 都是二维数组。

这些数组非常大,因此我认为这样做效率很低,我应该交换它们的内存位置。

我创建了一个名为 swapmem 的函数,定义如下:

void swap_mem(double **array1, double **array2) 
{
double *tmp;
tmp = *array1;
*array1 = *array2;
*array2 = tmp;
}

在我的代码中我调用

   swap_mem(&u,&u_new); 

但是这似乎不起作用。我收到警告:从不兼容的指针类型传递 swap_mem 的参数 1

我该如何解决这个问题?

最佳答案

更改为这个,它应该可以工作:

void swap_mem(double ***array1, double ***array2)
{
double **tmp;
tmp = *array1;
*array1 = *array2;
*array2 = tmp;
}

仔细阅读警告和错误。它们实际上包含了关于该做什么的很好的线索。当我编译你的代码时,我得到了这个:

bb.c:21:14: warning: passing argument 1 of ‘swap_mem’ from incompatible pointer type [-Wincompatible-pointer-types]
swap_mem(&u, &u_new);
^
bb.c:10:6: note: expected ‘double **’ but argument is of type ‘double ***’
void swap_mem(double **array1, double **array2)

请注意以下行:预期为“double **”,但参数的类型为“double ***”

关于c - 通过切换指针来交换二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47124431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com