C++ 从函数返回指针


在上一章中,我们已经了解了 C++ 中如何从函数返回数组,类似地,C++ 允许您从函数返回指针。为了做到这点,您必须声明一个返回指针的函数,如下所示:

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

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

现在,让我们来看下面的函数,它会生成 10 个随机数,并使用表示指针的数组名(即第一个数组元素的地址)来返回它们,具体如下:

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

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

  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