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 = &pi;

    return ptr_pi;  // 错误,不能返回局部变量的地址
}

下面这种方法是允许的

double * return_point() {
    double pi = 3.1415926;

    static int ptr_pi = &pi;

    return ptr_pi;  // 可以,因为 ptr_pi 是静态变量
}

返回上一级

C++ 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.