C++做一个返回数组指针的函数

这个问题我已经不是第一次遇到了,由于不是总编程,所以总会忘记这一点:

在c++中是不允许数组作为函数的返回值的

所以想要函数返回一个数组,那么只能返回这个数组的指针,然后在想调用这个数组的函数中新建指针然后调用这个函数。
举个例子:

//生成含有范围属于[begin,end]的188个随机整数的数组
int *List(int begin, int end)
{
    const int sum=188;
    int *a= new int[sum];
    srand((unsigned)time(NULL));
    list<int>::iterator it;//迭代器
    list<int> l;//定义链表,保存生成的随机数  
    if ( (end<0)||(begin<0)||(begin >end)|| (sum>end))//起始范围必须大于0,且随机数个数小于等于最大数字范围  
    {  
        cout << "范围错误";  
        cout << endl;  
        system("pause");
    }  
    else  
    {  
        while (l.size() < sum)  
        {  
            l.push_back((rand()*5) % (end - begin + 1) + begin);  
            l.sort();//排序  
            l.unique();//去除相邻的重复随机数中的第一个  
        }
    }  
    int i=0;
    for (it = l.begin(); it != l.end(); it++)  
    {  
        a[i]=*it; 
        i++;
    }
    return a;  
} 

调用

const int dataNum=147456;
int *DataList = List(0,dataNum);

这里就可以调用到生成的数组。

这个代码里有个小细节,是我遇到问题之后解决的

随机数的生成,大家都知道使用下面的搭配来生成0-100的随机数:

srand((unsigned)time(NULL))和rand()%100

但是一般很少有人用到去生成很大的随机数,而在一开始出错之后,我测试发现:
rand()生成的数值最大是34767,也就是说,如果要像我一样生成0-147456之间的随机数,就要进行改变,让这个rand变得更大。我这里很偷懒的用了乘5的方法,你们有更好的方法可以告诉我,我这里需要的没有那么精确随机,所以就这么用了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷失的walker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值