gpt4 book ai didi

c - 错误 : initialization makes pointer from integer without a cast

转载 作者:太空狗 更新时间:2023-10-29 15:22:02 24 4
gpt4 key购买 nike

我在处理这段返回错误的代码时遇到了问题:

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 }

编辑:修正了一些错误,仍然报同样的错误

最佳答案

我猜这是你的第 12 行

    double * point = alloc_vector(dim);

警告的内容是

warning: initialization makes pointer from integer without a cast

这意味着从 alloc_vector() 返回的整数会自动转换为指针,您不应该这样做(此外,尽管有警告提示,您也不应该强制转换在)。

更正:在声明alloc_vector() 的地方添加正确的#include,以便编译器知道它返回一个指针而不返回指针需要(错误地)猜测它返回一个整数。

或者,如果您没有包含文件,请自己在文件顶部添加原型(prototype)

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

关于c - 错误 : initialization makes pointer from integer without a cast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22422400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com