我在这段代码返回错误时遇到了麻烦:
assgTest2.c: In function 'Integrate':
assgTest2.c:12: warning: initialization makes pointer from integer without a cast
assgTest2.c:15: error: expected ';' before ')' token
我四处张望,但无法理解类似问题的答案,我们将不胜感激。
1 void SamplePoint(double *point, double *lo, double *hi, int dim)
2 {
3 int i = 0;
4 for (i = 0; i < dim; i++)
5 point[i] = lo[i] + rand() * (hi[i] - lo[i]);
6 }
7
8 double Integrate(double (*f)(double *, int), double *lo, double *hi, int dim,
9 double N)
10 {
11 double * point = alloc_vector(dim);
12 double sum = 0.0, sumsq = 0.0;
13
14 int i = 0;
15 for (i = 0.0, i < N; i++)
16 {
17 SamplePoint(point, lo, hi, dim);
18
19 double fx = f(point, dim);
20 sum += fx;
21 sumsq += fx * fx;
22 }
23
24 double volume = 1.0;
25 i = 0;
26 for (i = 0; i < dim; i++)
27 volume *= (hi[i] - lo[i]);
28
29 free_vector(point, dim);
30 return volume * sum / N;
31 }
编辑:修复了一些错误,仍然给出相同的错误
我想这是你的第十二行
double * point = alloc_vector(dim);
警告文字为
warning: initialization makes pointer from integer without a cast
这意味着从返回的整数将alloc_vector()
被自动转换为指针,并且您不应该这样做(尽管警告提示您也不应该强制转换)。
纠正:添加正确的#include
wherealloc_vector()
声明,以便编译器知道它返回一个指针,而无需猜测(不正确)它返回一个整数。
或者,如果您没有包含文件,请在文件顶部自己添加原型
double *alloc_vector(int); // just guessing
第15行
for (i = 0.0, i < N; i++)
错误的文字是
assgTest2.c:15: error: expected ';' before ')' token
每个for语句在控件结构中(在括号之间)都有两个分号。您的控件结构只有1个分号。更改为
for (i = 0.0; i < N; i++)
// ^ <-- semicolon
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句