首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

100分-函数怎么返回一个不定长的数组

2012-03-19 
100分-在线等:函数如何返回一个不定长的数组?in是输入参数out是输出参数outlength也是输出参数,是out数组

100分-在线等:函数如何返回一个不定长的数组?
in是输入参数
out是输出参数
outlength也是输出参数,是out数组的长度
void   fun(unsigned   char   *in,unsigned   char   *out,int   outlength)
{


}

我既然不知道out的长度,那么我如何传out这个参数呢?


[解决办法]
这么搞,返回值类型会有问题的:
vector <basic_string <unsigned char> > fun(const vector <basic_string <unsigned char> > &in)
{

}


差不多也就能这样,不过不建议内部分配,外部使用。
void fun(unsigned char *in,unsigned char **out,int *outlength)
{
*outlength = 200;
*out = malloc(outlength+1) ;

}
[解决办法]
int fun(unsigned char *in,unsigned char *& out)
{
int size;
for (...) ... 判断In长度
out = new unsigned char[size]; //分配新空间,注意out指针要引用传递,
-----------------------------------//才能改变你外面的指针
return size; //返回长度
}

不定长的数组, 也就是动态分配的内存区域,可以用指针来指向.
不定长并非是不知道长度,在你分配的时候就知道长度,只是调用一方不知到长度.既然函数内部知道
长度,那么将这个长度传递出去就是了.

热点排行