VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 831|回复: 5

函数如何返回一个不定长的数组?

[复制链接]

3

主题

10

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-2-23 15:00:01 | 显示全部楼层 |阅读模式

in是输入参数
out是输出参数
outlength也是输出参数,是out数组的长度
void fun(unsigned char *in,unsigned char *out,int outlength)
{


}

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

使用道具 举报

0

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-5-9 14:45:01 | 显示全部楼层
用地址啊!
回复

使用道具 举报

0

主题

13

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-5-9 17:00:01 | 显示全部楼层

void fun(unsigned char *in,unsigned char *&out,int &outlength)
回复

使用道具 举报

3

主题

10

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
 楼主| 发表于 2020-5-10 11:45:01 | 显示全部楼层
void __fastcall TForm1::btn4Click(TObject *Sender)
{

char *a=new char[100];
char *b;
fun(a,b);


}
//---------------------------------------------------------------------------
void TForm1::fun(char * src, char * &dest)
{
   int n=3;
   char *a=new char[n];//在什么时候释放?
   a[0]='1';
   a[1]='2';
   a[2]='3';
   dest=a;
     
}
回复

使用道具 举报

0

主题

45

帖子

32.00

积分

新手上路

Rank: 1

积分
32.00
发表于 2020-5-26 12:00:01 | 显示全部楼层
退出函数的时候会被释放,
dest应该返回不了正确的值
直接在函数中操作dest就好了
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-5-28 19:15:01 | 显示全部楼层
返回两个参数,一个是数组的地址,一个是数组的长度。
或者用std::vector, 返回你的vector就行了, 调用size()就可以得到数据长度了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表