gpt4 book ai didi

c - "["标记之前的预期表达式

转载 作者:行者123 更新时间:2023-11-30 21:45:56 24 4
gpt4 key购买 nike

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int main()
{
int i,j;
double xcord[201], ycord[201];
double *a,*b;
float delx,dely;

double *phi = (double *)malloc(201 *201* sizeof(double));
double *r = (double *)malloc(201 *201* sizeof(double));

delx=0.005;

dely=0.005;
a=xcord;
b=xcord;

for(i=1;i<=201;i++)//grid generation
{
xcord[i]=-0.5+0.005*(i-1);
ycord[i]=-0.5+0.005*(i-1);
}
for(i=1;i<=201;i++)
{
for(j=1;j<=201;j++)
{
printf("%f %f\n",xcord[i],ycord[j]);
}
}
for(i=1;i<=201;i++)//phi value calculation
{
for(j=1;j<=201;j++)
{
/* Next 2 lines are highlighted */
*(r + (i-1)*201+ (j-1))=1500*[{(*(a+(i-1))+0.25)*(*(a+(i-1))+0.25)}+{(*(b+(j-1)))*(*(b+(j-1)))};
*(phi + (i-1)*201+ (j-1))=5*exp (*(r + (i-1)*201+ (j-1)));
}
}
for(i=1;i<=201;i++)
{
for(j=1;j<=201;j++)
{
printf("%f \n",*(phi + (i-1)*201+ (j-1)));
}
}
return 0;
}

这是我编写的代码,用于生成计算网格,然后计算变量 phi 的值在网格的每个节点。我试图将方程 phi (=5exp[-1500{(x+0.25)*(x+0.25)+y*y}])在突出显示的两行中。但每次编译时都会收到错误“第 34 行 [ 标记之前的预期表达式。

最佳答案

括号就是括号。在 C 中,对表达式进行分组时不使用任何其他类型的大括号,因为方括号 [] 和大括号 {} 在该语言中具有特殊含义。只需使用括号()

<小时/>

然后是一些一般提示:对于任何指针或数组 p 和索引 i,表达式 *(p + i) 为相当于p[i]。后者通常更容易阅读和理解,这意味着它也更易于维护。请注意,p 可以是生成指针(或数组)的任何表达式,i 可以是生成非负整数的任何表达式。

此外,如果您有一个静态大小的“数组”,例如在代码中的 phi 中,将其声明为数组。这也将使其更容易理解和维护。如果 phi 是所谓的“二维”数组,则将其设为数组的数组:

double phi[201][201];

这一点尤其重要,因为您实际上并没有释放您分配的内存。在这种情况下效果很好,因为您退出程序,这在大多数系统上意味着分配的内存将自动释放,但是养成释放分配的内存的习惯将为您省去麻烦。使用数组你不需要释放任何东西。

最后,在 C 中,您不应强制转换 malloc(或任何返回 void * 的函数)的结果。请参阅this SO question and answer for more information .

关于c - "["标记之前的预期表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35193969/

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