c - 二进制 + 的操作数无效(有 ‘double *’ 和 ‘double’ )

标签 c

我一次又一次地收到此错误,这是什么意思。 2dtransient_CN.c:359:131:错误:二进制 + 的操作数无效(具有“double *”和“double”) 这个错误出现在下面给出的代码中 *子程序inidat
****************************************************** **************/

void inidat(int nx, int ny, double *u1, double *u2, double *A, double *B) {
int i, j, ij;
//initial condition
for (i = 0; i <= nx-1; i++){
for (j = 0; j <= ny-1; j++){
ij = i*ny+j;
u1[ij]=0;
u2[ij]=0;
B[ij]=0;
A[ij]=0;
     }

//Defining coefficient matrix A
for (i = 0; i <= nx-1; i++){
for (j = 0; j <= ny-1; j++){
ij = i*ny+j;
if (ij>=0 && ij<nx){    // Bottom B.C.
A[ij] = 1;
A[ij+nx] = -1;
B[ij] = 0;
         }
else if (ij>=(ny-nx)){  // Top B.C.
A[ij] = 1;
A[ij-nx] = -1;
B[ij] = 0;
         }
else if ((ij%nx)==0 && ij!=0 && ij!=(ny-nx)){ // Left B.C.
A[ij] =  1;
A[ij+1] = -1;
B[ij] = 0;
         }
else if (((ij+1)%nx)==0 && ij!=(ny-1) && ij!=(nx-1)){ // right B.C.
A[ij] =  1;
A[ij-1] = -1;
B[ij] = 0;
         }
else{ // for interior points
A[ij-nx] = -0.5*diffusivity.cy;
A[ij-1] = -0.5*diffusivity.cx;
A[ij] = 1 + diffusivity.cx + diffusivity.cy;
A[ij+1] = -0.5*diffusivity.cx;
A[ij+nx] = -0.5*diffusivity.cy;
B[ij] = (*(u2+ij-1)+ *(u2+ij+1))*0.5*diffusivity.cx + *(u2+ij)*(1-diffusivity.cx-diffusivity.cy) + *((u2+ij+nx)+ *(u2+ij-nx))*0.5*diffusivity.cy;
         }
       }
     }
  }
}

/************************************ 我应该在上面的代码中更改什么来解决此错误。

最佳答案

在最后一行,最后一部分替换

*((u2+ij+nx)+ *(u2+ij-nx))*0.5*diffusivity.cy;

(*(u2+ij+nx)+ *(u2+ij-nx))*0.5*diffusivity.cy;

说明:

(u2+ij+nx) - 是一个指针,因为 u2 是一个指针

*(u2+ij-nx) - 是一个 double

不能将 double 值添加到指针值中。在 C 中是禁止的。

我猜您想将两个值相加,然后乘以 0.5*diffusivity.cy,这是建议的解决方案中给出的内容。

关于c - 二进制 + 的操作数无效(有 ‘double *’ 和 ‘double’ ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37454371/

相关文章:

c++ - va_arg 给出运行时错误

c - mex 文件 : compilation fails with with "//" comment; but compiles fine when used "/* */"

将 matlab 函数转换为 C

c - atoi() 使程序崩溃

c - 两个浮点加法不改变结果

c - mktime 和 tm_isdst

c - 返回一个指向动态分配结构的指针还是需要从调用函数分配内存?

c - 如果文件指针在 C 中返回 NULL,我如何确定文件不存在或访问权限不存在?

c - 从 C 程序编写 bash 应用程序的 STDIN

c - 为什么声明一个长度为 INT_MAX 的 int 数组会产生段错误?