我是靠谱客的博主 儒雅鸡,最近开发中收集的这篇文章主要介绍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的方法,你们有更好的方法可以告诉我,我这里需要的没有那么精确随机,所以就这么用了。

最后

以上就是儒雅鸡为你收集整理的C++做一个返回数组指针的函数的全部内容,希望文章能够帮你解决C++做一个返回数组指针的函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部