错误,*的运算符必须是指针

时间:2014-09-27 23:34:16

标签: c++ c

我正在尝试使用步骤1 / n计算pi从0到1-1 / n的值,但是c不会让我乘以2PI和我的步骤数组(错误,*的运算符必须是指针) 。我是新来的,所以如果有人能指出我正确的方向,这将是伟大的。这是我的代码。

#include <stdio.h>
#include <conio.h>
#include <inttypes.h>
#include <math.h>
#define PI

int main(){
    int i;
    double in[256], out[256],n;
    n = 128.0000;
    for (i = 0; i <= n-1; i++){
        in[i] = i / n;
        out[i] = sin(2*PI*in[i]);
        printf("%lf %lf \n", in[i],out[i]);
    }


    _getch();



}

2 个答案:

答案 0 :(得分:4)

#define PI

您没有为PI定义任何值,请将其更改为

#define PI 3.14159265358979323846

#define PI M_PI

如果你在POSIX世界(math.h也必须包括在内)。

在您的示例中,PI只替换为任何内容和您的赋值语句:

out[i] = sin(2*PI*in[i]);

最终:

out[i] = sin(2**in[i]);

答案 1 :(得分:2)

您定义PI,但未将其定义为 任何内容。因此,令牌PI会被代码中的 nothing 替换。所以这一行:

out[i] = sin(2*PI*in[i]);

变为:

out[i] = sin(2**in[i]);

相当于:

out[i] = sin(2*(*in[i]));

这意味着“获取i数组的第in个元素,取消引用它,将结果乘以2,然后将其传递给sin()。但是i in数组的第th个元素是double,而不是指针类型 - 这就是你得到这个特殊错误的原因,因为*的操作数确实不是指针类型。

您需要为PI定义添加值:

#define PI 3.1415926535897932384626433