C中晶圆厂的一些错误

Some errors with fabs in C

本文关键字:错误 圆厂      更新时间:2023-10-16

我正在c++中编写以下函数:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <mex.h>
#include <math.h>
#include "matrix.h"
void funnc(double *f, double *x, long n, long b, double lambda, double theta)
{
    long i;
    long j;
    double u,v,y,z,w;
    y = theta*lambda;
    w = lambda*lambda;
    z = 0.5*(theta+1.0)*w;
    u = 0.0;
    for(i=0;i<n;i++)
    {
        for(j=0;j<b;j++)
        v = fabs(x[i][j]);
        if (v <= lambda)
            u += lambda*v;
        else if (v > y)
            u += z;
        else
            u += 0.5*(v*(2*y - v) - w)/(theta-1.0);
    }
    *f = u;
    return;
}
etc.

事实上,函数的编译由于以下错误而失败:

error C2109: subscript requires array or pointer type 
error C2168: 'fabs' : too few actual parameters for intrinsic function 

有人能纠正我的代码吗??我对C++了解不多。

任何帮助都将不胜感激!

您只提供了一个指向函数的指针。据我所知,你想要一张2D表格。您应该给出双**x而不是双**x。

您的x属于double*类型,因此它是一个1D数组:您不能将其称为x[i][j]

如果您已经发送了2D数组的第一个元素的地址,那么您必须进行正确的指针数学运算:

不是:

x[i][j]

因为它是一个单独的指针。假设b是2D阵列的宽度,您可以这样做:

v = fabs(*(x+i*b+j));