【问题标题】:Returning array from a function C++从函数 C++ 返回数组
【发布时间】:2015-07-25 14:33:56
【问题描述】:

给定这个函数:

 int * myFunction(){

        static int result[3]; 
        result[0] = 1;
        result[1] = 2;
        result[2] = 3;

        return result;

    }

如何将 return[1] 的值分配给 main 方法中的变量?

【问题讨论】:

    标签: c++ arrays function


    【解决方案1】:

    试试下面的

    int main()
    {
       int x = myFunction()[1];
    
       //...
    

    或者

    int main()
    {
       int *p = myFunction(); 
       int x = p[1];
    
       //...
    

    至于你的问题标题中的问题,例如你可以写

    #include <iostream>
    
    int ( &myFunction() )[3]
    {
            static int result[3] = { 1, 2, 3 }; 
            //...
            return result;
    }
    
    int main( void )
    {
        decltype( auto ) a = myFunction();
    
        std::cout << sizeof( a ) << std::endl;
    
        for ( int x : a ) std::cout << x << ' ';
        std::cout << std::endl;
    }    
    

    程序输出可能看起来像

    12
    1 2 3 
    

    如果您的编译器不支持 C++ 2014 则声明

        decltype( auto ) a = myFunction();
    

    可以替代

        int ( &a )[3] = myFunction();
    

    另一种方法是使用std::array 代替数组。例如

    #include <iostream>
    #include <array>
    
    std::array<int, 3> myFunction()
    {
            static std::array<int, 3> result = { { 1, 2, 3 } }; 
            //...
    
            return result;
    }
    
    int main( void )
    {
        auto a = myFunction();
    
        std::cout << sizeof( a ) << std::endl;
    
        for ( int x : a ) std::cout << x << ' ';
        std::cout << std::endl;
    }    
    

    在这种情况下,函数中的result 没有必要具有静态存储持续时间。

    【讨论】:

    • @Gabriel Vilella 我希望如此。:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2015-02-09
    • 2021-03-29
    • 2012-06-17
    • 2023-04-08
    • 2014-09-16
    相关资源
    最近更新 更多