C++ 从函数返回数组


C++ 不允许返回一个完整的数组作为函数的参数。但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针。

如果您想要从函数返回一个一维数组,您必须声明一个返回指针的函数,如下:

  1. int * myFunction()
  2. {
  3. .
  4. .
  5. .
  6. }

另外,C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。

现在,让我们来看下面的函数,它会生成 10 个随机数,并使用数组来返回它们,具体如下:

  1. #include <iostream>
  2. #include <ctime>
  3.  
  4. using namespace std;
  5.  
  6. // 要生成和返回随机数的函数
  7. int * getRandom( )
  8. {
  9. static int r[10];
  10.  
  11. // 设置种子
  12. srand( (unsigned)time( NULL ) );
  13. for (int i = 0; i < 10; ++i)
  14. {
  15. r[i] = rand();
  16. cout << r[i] << endl;
  17. }
  18.  
  19. return r;
  20. }
  21.  
  22. // 要调用上面定义函数的主函数
  23. int main ()
  24. {
  25. // 一个指向整数的指针
  26. int *p;
  27.  
  28. p = getRandom();
  29. for ( int i = 0; i < 10; i++ )
  30. {
  31. cout << "*(p + " << i << ") : ";
  32. cout << *(p + i) << endl;
  33. }
  34.  
  35. return 0;
  36. }

当上面的代码被编译和执行时,它会产生下列结果:

  1. 624723190
  2. 1468735695
  3. 807113585
  4. 976495677
  5. 613357504
  6. 1377296355
  7. 1530315259
  8. 1778906708
  9. 1820354158
  10. 667126415
  11. *(p + 0) : 624723190
  12. *(p + 1) : 1468735695
  13. *(p + 2) : 807113585
  14. *(p + 3) : 976495677
  15. *(p + 4) : 613357504
  16. *(p + 5) : 1377296355
  17. *(p + 6) : 1530315259
  18. *(p + 7) : 1778906708
  19. *(p + 8) : 1820354158
  20. *(p + 9) : 667126415