请帮我理解这些错误

时间:2014-02-03 06:59:50

标签: c

#include<stdio.h>

float func (float t, float y){
    return y ;
}

int main (){
    float t0,y0,t,y;
    printf ("the value of t: ");
    scanf ("%f",&t0);
    printf ("the value of y: ");
    scanf ("%f",&y0);
    t=t0;
    y=y0;
    static int n=0;

    //     t[0]=t0;
    //     y[0]=y0;

    for (n=0;n<=3;n++){
        y[1]=y[0];
        printf ("value of y %f   %f \n",t,y);
    }
    return 0;
}

错误是:

Building prog.obj.
D:\master\c language\ch3\prog.c(166): warning #2117: Old-style function definition for 'main'.
D:\master\c language\ch3\prog.c(182): error #2144: Type error: pointer expected.
D:\master\c language\ch3\prog.c(182): error #2144: Type error: pointer expected.
*** Error code: 1 ***

2 个答案:

答案 0 :(得分:2)

您不能对不是数组的内容或指向数组的指针进行数组索引。

您的yt float不是程序中指向数组的指针。

你应该将它们float *y, *t变成指针,这样你就可以将它们指向数组。

float t0,y0,t,y;更改为float t0,y0,*t,*y;

t=&t0; //assign address of t0 to t
y=&y0;

printf ("value of y %f %f \n",t,y);更改为

  printf ("value of y %f   %f \n",*t,*y); //note to dereference t and y here, to get their values

Here's a example of your program I fixed to work

答案 1 :(得分:0)

main()&#39;的旧式功能定义消息表示您没有给出原型定义。正确的形式是:

int main(void) { ... }
int main(int argc, char **argv) { ... }

版本int main()在C ++中很好,但在C中并不是严格的原型,因此可以获得“旧式”的版本。标签

其他消息更难以理解;行号与您显示的代码不对应。但是,正如Tony The Lion中的answer注释

y[1] = y[0];

是错误的,因为y不是数组。有空间认为应该是:

 y = y0;

你需要一位同伴:

 t = t0;

以便在printf()语句中打印定义的值。

即使进行了这些更改,代码也没有多大意义。但是,鉴于您删除了150多行,我们可以假设丢失的代码更有意义。

无需将n变为static变量;最好不要这样做。


以后请确保您的错误消息与您发布的源代码相对应,而不是您发布的代码的某些变体版本。行号不应该大到166或182;它们应该是单个数字或小的双位数字。但更重要的是,它们应该匹配代码!