首页 > 代码库 > C++从函数返回指针

C++从函数返回指针

C++ 允许您从函数返回指针。为了做到这点,必须声明一个返回指针的函数,如下所示:

int * myFunction(){...}

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

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

#include <iostream>#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;}

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

62472319014687356958071135859764956776133575041377296355153031525917789067081820354158667126415*(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

 var 是一个指向数组开头的常量,不能作为左值。由于一个数组名对应一个指针常量,只要不改变数组的值,仍然可以用指针形式的表达式。

 

C++从函数返回指针