函数之间传递数据的问题,请给提示

rucil 2002-02-21 03:28:51
函数 RES() 用来求运算结果.
NE()中获得一个二维数组ne,大小为4*4;
T()中获得一个一维数组t,大小为1*4;
在RES()中需要使用这两个数组,现在我想让NE()返回数组ne的首地址,T()返回数组t的首地址,然后在RES()中通过寻址来使用ne和t,那么函数的声明\调用以及返回类型应该怎么弄呢?
...全文
139 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
arthor 2002-02-23
  • 打赏
  • 举报
回复
double **NE()
{
double **ne ;

ne = new double *[4] ;
for (int i=0 ; i<4 ; i++)
{
ne[i] = new double [4] ;
}

{一些关于ne的计算}
return ne ;
}
}

double *T()
{
double *t ;
t = new double [4] ;
{
一些关于t的计算 ;
}
return t ;
}

double RESU(double **ne , double *t) ;
void main()
{
RESU(NE(), T());
}
rucil 2002-02-23
  • 打赏
  • 举报
回复
非常感谢各位的帮助,尤其是protitype,ziqiriying和arthor。本人马上就去研究一下大家给出的答案。
我原先只知道传递一维数组的方法,现在知道了,传递二维数组应当使用
double**作为函数的返回类型,也就是利用指针数组来表示二维数组,不知我的理解对否。
不过,ziqiriying的方法似乎太template化了,我觉得并非每时每刻都要用template,有时候蛮费事的。
谢谢各位,分数已给出。
ziqiriying 2002-02-23
  • 打赏
  • 举报
回复
你上我说的全部推倒重来
我所写的例子已经全部通过 VC7.0( beta 2 );
template< typename valueType >
valueType** NE( valueType **&p ) // 一定要使用reference
{
int m = 4;
int n = 4;

ptr = new char*[m];

for( int i = 0; i < m; ++i )
{
ptr[i] = new char[n];
}

return p;
}

template< typename valueType >
valueType* T( valueType *&p )
{
int m = 4;
p = new char[m];
return p;
}

template< typename valueType1, typename valueType2,typename valueType3 >
valueType3 RES( valueType1 *p1,valueType2 **p3 )
{ // 处理语句
}
使用时

int main()
{
char **a;
char *b;

NE( a );
T( b );
RES(a,b);
}


ziqiriying 2002-02-22
  • 打赏
  • 举报
回复
上面有错误
template<typename value>
value * NE( value *ptr )
{
ptr = new value[4];
return ptr;


}
template<typename value>
value* NE( value * ptr )
{
int row = 4;
int vol = 4;

(*prt)[4] = new value[4][4];// maybe have a problem ,let me try
return ptr;
}

template<typename valType,typename,valType2>
void RES( valType *,valType2 * )
{}

ziqiriying 2002-02-22
  • 打赏
  • 举报
回复
我的建议是
template<typename value>
value * NE( value *ptr )
{


}
template<typename value>
value* T( value * ptr )
{
int row = 4;
int vol = 4;

(*prt)[4] = new value[4][4];// maybe have a problem ,let me try
return ptr;
}

template<typename valType,typename,valType2>
void RES( valType *,valType2 * )
{}
meng_tenboy 2002-02-22
  • 打赏
  • 举报
回复
float *NE()
float *T()
hz129 2002-02-21
  • 打赏
  • 举报
回复
float *NE()
float *T()
void RES(float *, float *) {
//do something
}
leasun 2002-02-21
  • 打赏
  • 举报
回复
NE(float *ne)
T(float *t)
prototype 2002-02-21
  • 打赏
  • 举报
回复
maybe there are many ways doing what you want. for example:

i assume the data type for your arrays is 'float'.

float** NE()
{
// allocates the 2-D dynamic array and returns the its address.
}

float* T()
{
// allocates the 1-D dynamics array and returns its address.
}

void RES( float** array2d, float* array1d ) // you may change the return type of this function to something else depending on your need.
{
// does something with the 2-D and 1-D arrays.
}

hope this helps

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧