C++ 从函数返回数组
C++ 不允许返回一个完整的数组作为函数的参数。但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针。
如果您想要从函数返回一个一维数组,您必须声明一个返回指针的函数,如下:
int * myFunction()
{
.
.
.
}
另外,C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。
现在,让我们来看下面的函数,它会生成 10 个随机数,并使用数组来返回它们,具体如下:
实例
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
// 要生成和返回随机数的函数
int * getRandom( )
{
static int r[10];
// 设置种子
srand( (unsigned)time( NULL ) );
for (int i = 0; i < 10; ++i)
{
r[i] = rand();
cout << r[i] << endl;
}
return r;
}
// 要调用上面定义函数的主函数
int main ()
{
// 一个指向整数的指针
int *p;
p = getRandom();
for ( int i = 0; i < 10; i++ )
{
cout << "*(p + " << i << ") : ";
cout << *(p + i) << endl;
}
return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
624723190 1468735695 807113585 976495677 613357504 1377296355 1530315259 1778906708 1820354158 667126415 *(p + 0) : 624723190 *(p + 1) : 1468735695 *(p + 2) : 807113585 *(p + 3) : 976495677 *(p + 4) : 613357504 *(p + 5) : 1377296355 *(p + 6) : 1530315259 *(p + 7) : 1778906708 *(p + 8) : 1820354158 *(p + 9) : 667126415
箫无痕
myl***ea@vip.qq.com
参考地址
C++中函数是不能直接返回一个数组的,但是数组其实就是指针,所以可以让函数返回指针来实现:
箫无痕
myl***ea@vip.qq.com
参考地址
BOB
380***902@qq.com
『返回指针的函数』和『指向函数的指针』非常相似,使用时特别注意区分。
返回指针的函数定义:char * upper(char *str)
指向函数的指针:char (*fun)(int int)
返回指针的函数:
指向函数的指针:
int result = (*fun)(1,2); 是指向 add 函数的函数,执行结果 result=3。
char *dest = upper(heLLo); 将 hello 字符串中的小写字母全部转换为大写字母。
BOB
380***902@qq.com
wdb
424***031@qq.com
srand以一个时间点为参数播种,当执行的随机数少的时候,时间没有变化,产生的随机数是一样的,下面这例子,输入的很多,前面几十个随机数都是一样的,当时间增加一个单位之后生成的随机数就不一样了,会递增,所以 srand 函数要放在 rand 循环的外面避免每次循环产生的随机数一样。
wdb
424***031@qq.com
周大侠
277***091@qq.com
@BOB 这位朋友提供的代码有几处错误,我更改了一下:
周大侠
277***091@qq.com