概述
这个问题我已经不是第一次遇到了,由于不是总编程,所以总会忘记这一点:
在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++做一个返回数组指针的函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复