C++ C语言中fabs的一些错误
我正在用c++编写以下函数: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;
#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]