C++ 函数返回数组

返回上一级

C++ 不允许函数返回一个完整的数组,比如下面这种方式是错误的

int[] myFunction(){}

但是,可以通过指定不带索引的数组名来返回一个指向数组的指针,例如这样是允许的

int * myFunction(){}

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

下面这样是不被允许的

int * myFunction(){
    int arr[] myarr;
    return myarr; // 错误,不能返回局部变量
}

下面这样是被允许的

int * myFunction(){
    static int arr[] myarr;
    return myarr; // 可以,因为是静态局部变量
}

现在,我们写一个函数返回一个数组,这个数组包含随机生成的 5 个数字

/**
 * file: main.cpp
 * author: 简单教程(www.twle.cn)
 *
 * Copyright © 2015-2065 www.twle.cn. All rights reserved.
 */

#include <iostream>
#include <cstdlib>
#include <ctime>

const int LEN = 5;

// 要生成和返回随机数的函数
int * random_num( )
{
    static int  r[LEN];

    // 设置种子
    srand( (unsigned)time( NULL ) );

    for (int i = 0; i < LEN; ++i)
    {
        r[i] = rand();
        std::cout << r[i] << std::endl;
    }

    return r;
}

int main () {

   // 一个指向整数的指针
   int *p;

    p = random_num();

    for ( int i = 0; i < LEN; i++ )
    {
        std::cout << "*(p + " << i << ") : ";
        std::cout << *(p + i) << std::endl;
    }

    return 0;
}

编译和运行以上范例,输出结果如下

1985819170
1619432163
588621463
1651250559
636974932
*(p + 0) : 1985819170
*(p + 1) : 1619432163
*(p + 2) : 588621463
*(p + 3) : 1651250559
*(p + 4) : 636974932

返回上一级

C++ 基础教程

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

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

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