C/c++ new定义的动态二维数组做形参时的书写要求是什么

来源:百度知道 编辑:UC知道 时间:2024/06/16 23:33:07
我用new定义了一个二维数组,如下:
float **z=new float *[N];
for(int i=0;i<N;i++)
{
z[i]=new float[N];
}
调用另一个程序时要用它作实参,作实参有什么书写要求?
作实参时是这样的:
float DE=DE(z,tar,D,v,nan,P,lam);
这是被调函数和形参:
float DE(new float **(z),int tar[2],float D,float v,int nan,int P,float lam)
编译时总是报错,我不知怎么改,请各位高手指点一二。

我给你几个宏吧 你可以读读我的宏代码。
#define matrix_allocate(m,w,h,TYPE)
{
m=new TYPE*[h];
for(int _i=0;_i<h;_i++)
m[_i]=new TYPE[w];
} //动态创建二维数组
#define matrix_init(m,w,h,TYPE,VALUE)
{
for (int _i_=0; _i_<h; _i_++)
{
memset(m[_i_], VALUE, sizeof(TYPE)*w);
}
} //初始化二维数组
#define matrix_delete(m,w,h)
{
for(int _i=0;_i<h;_i++)
delete[]m[_i];
delete[]m;m = 0;
} //动态删除二维数组

这是我在编写图像处理的时候用到的,m是一个指向指针的指针,需要预先定义,w就是width,h就是height,创建出来的数组大小为m[h][w];TYPE即位数据类型,可以是int、char、float或者你自定义的类型。 VALUE是数组初始化时的值,不过由于采用的memset函数来初始化,所有只有其等于0是才能正确的初始化。 C和C++中内存需要程序员自己管理,申请后就需要初始化,而且记得释放,所以就有了这三个宏比较方便。

使用实例:int **A;
int x,y;
x = y = 100;
matrix_allocate(A,x,y,int);
matrix_init(A,x,y,int,0);
matrix_delete(A,x,y);

你的函数我不理解,错误很奇怪,懒得看,如果定义为函数