C++ C语言中fabs的一些错误

C++ C语言中fabs的一些错误,c++,C++,我正在用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;

我正在用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.
请有人能更正我的代码吗??我不太懂C++。< /P>
任何帮助都将不胜感激

您的
x
属于
double*
类型,因此它是一个1D数组:您不能将某个对象称为
x[i][j]
您只给出了一个指向函数的指针。据我所知,你想要一张2D表格。您应该给出double**x而不是double*x。

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

不是:

因为它是一个指针。 假设
b
是2D数组的宽度,则可以执行以下操作:


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

在单个间接变量上有一个双解引用,
x[i][j]
x
double*
,而不是
double**
double(*)[N]
谢谢你的回答:)不幸的是,这是我使用C语言的第一天。你不是“使用C++语言”,而是使用C语言。谢谢。事实上,我对C和C++的不同感到困惑。我只是想更正这个代码。我不想学习更多关于C语言的知识:)谢谢你的回答谢谢,是的,double*代表1D
error C2109: subscript requires array or pointer type 
error C2168: 'fabs' : too few actual parameters for intrinsic function 
x[i][j]