C++ 函数返回指针
C++ 允许函数返回一个指针
为了做到这点,必须先声明一个返回指针的函数
int * myFunction() {}
我们写一个范例创建一个返回指针的函数
/** * file: main.cpp * author: 简单教程(www.twle.cn) * * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ #include <iostream> #include <ctime> #include <cstdlib> // 要生成和返回随机数的函数 int * random_int() { static int r[5]; // 设置种子 srand( (unsigned)time( NULL ) ); for (int i = 0; i < 10; ++i) { r[i] = rand(); std::cout << r[i] << std::endl; } return r; } int main () { // 一个指向整数的指针 int *p; p = random_int(); for ( int i = 0; i < 10; i++ ) { std::cout << "*(p + " << i << ") : "; std::cout << *(p + i) << std::endl; } return 0; }
编译和运行以上范例,输出结果如下
1740487391 1496824750 1510132292 1831691398 1059246441 115500257 2035086158 721011737 1941527385 236743530 *(p + 0) : 1740487391 *(p + 1) : 1496824750 *(p + 2) : 1510132292 *(p + 3) : 1831691398 *(p + 4) : 1059246441 *(p + 5) : 115500257 *(p + 6) : 2035086158 *(p + 7) : 721011737 *(p + 8) : 1941527385 *(p + 9) : 236743530
注意
C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量
下面这种返回指针的方法是错误的
double * return_point() { double pi = 3.1415926; int ptr_pi = π return ptr_pi; // 错误,不能返回局部变量的地址 }
下面这种方法是允许的
double * return_point() { double pi = 3.1415926; static int ptr_pi = π return ptr_pi; // 可以,因为 ptr_pi 是静态变量 }