警告:传递'calcFx'的参数2使得没有强制转换的指针产生整数

时间:2017-11-09 05:37:46

标签: c pointers structure codeblocks

好的,我发现了我的问题的真正罪魁祸首,这些数字正在扫描那些在此编辑之前在这里的人。

void computeDataPoints(F_SELECT *fsPtr, int n,  double points[][n])
{
  int ix;  // for indexing points, i.e. columns of 2D array
  double x; // for incrementing the value of x
  double inc;  // incrementation value of x
  inc = (fsPtr->xf - fsPtr->x0)/(n-1);
  x= fsPtr->x0;

 // Setup loop that computes the points and stores in 2D array
  for (ix=0; ix<NUM_POINTS; ix = ix + 1)
   {
      points[X_IX][ix]=x;
      points[FX_IX][ix]=calcFx(x, &fsPtr->fNumber);
      x = x+ inc;
   }
}

我不知道如何解决这个问题,并做了一些搜索,如果有人知道如何正确地通过这个我永远爱你

2 个答案:

答案 0 :(得分:0)

我只是在这里猜测,因为真的很少,但我认为情况是这样的:

您在调试器中单步调试代码。当调试器光标位于scanf行时,您将停止调用scanf。这意味着呼叫还没有发生。您需要再次再次 scanf来进行scanf来电。

另一种可能性是您跳过}调用,调试器光标现在位于关闭sfPtr的函数上。根据编译器及其生成的代码,这可能意味着变量scanf已超出范围,调试器无法可靠地检查。

上述情况的解决方案是在printf调用和函数结束之间添加另一个语句。例如,一个简单的 ... // Select a range of x for plotting printf("Select range of x for plotting (x0 and xf):"); scanf("%lf %lf", &sfPtr->x0, &sfPtr->xf); // Print the values just entered printf("x0 = %f, xf = %f\n", sfPtr->x0, sfPtr->xf); // The function ends here } 调用来打印值:

scanf

除了打印值之外,它还为调试器提供了额外的步骤,以便在调用ctrl后检查值。

答案 1 :(得分:0)

我找到了它

points[FX_IX][ix]=calcFx(x, &fsPtr->fNumber);

需要

points[FX_IX][ix]=calcFx(x, fsPtr->fNumber);

感谢所有在我看错地方时试图帮助我的人