#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 ***
答案 0 :(得分:2)
您不能对不是数组的内容或指向数组的指针进行数组索引。
您的y
和t
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
答案 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;它们应该是单个数字或小的双位数字。但更重要的是,它们应该匹配代码!