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

标签 c

#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/

相关文章:

无法写入 68HC12 板上的 SC1DRL 寄存器——我错过了什么?

c - 为什么 gcc(linux) 中考虑使用 fgets() 以及使用它的替代方法是什么?

c - 如何使用数字数组中的十六进制字符创建数组

c - scanf 未读取值

c - 需要一个在 Contiki 中使用 mmem 的例子

c - 函数参数无效

c - 电子邮件内容分类

c - 如何避免 thrust::device_vector 中元素的默认构造?

c - 在文本文件中使用整数运算扩展 C 预处理器宏?

c - 从 C 文件中动态读取一行