zoukankan      html  css  js  c++  java
  • 返回数组指针的函数

    首先,数组不能被拷贝,所以函数不能返回数组,但可以返回数组的指针或引用,返回数组的指针有一下几种方式:

    1.使用类型别名

    #include <iostream> 
    using namespace std;
    int b[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
    typedef int type[10];           //或using type=int[10],type是类型别名
    type *sum(int(&a)[10])            
    {
        return &a;                //不能返回局部变量的指针或引用,所以函数形参采 &     
    }
    
    int main(int argc,char *argv[])
    {    
        int(*p)[10] = sum(b);
        int *a = *p;
        for (int i = 0; i < 10; i++)
            cout << *(a + i) << endl;;
        return 1;
    }

    2.直接定义  

    #include <iostream> 
     using namespace std;
    int b[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
     int(*sum(int(&a)[10]))[10]    //数组的维度放在最后
     {
         return &a;
     }
      
     int main(int argc,char *argv[])
     {    
         int(*p)[10] = sum(b);
         int *a = *p;
         for (int i = 0; i < 10; i++)
             cout << *a++<< endl;;
         return 1;
     }

    3.使用auto

    #include <iostream> 
    using namespace std;
    int b[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
    auto sum(int(&a)[10])->int(*)[10]            //auto fun(形参列表)->int(*)[10],将真正的类型写后面
    {
        return &a;
    }
    
    int main(int argc,char *argv[])
    {    
        int(*p)[10] = sum(b);
        int *a = *p;
        for (int i = 0; i < 10; i++)
            cout << *a++<< endl;;
        return 1;
    }

    4.使用decltype

    #include <iostream> 
    using namespace std;
    int b[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
    decltype(b) *sum(int(&a)[10])           //使用decltype
    {
        return &a;
    }
    
    int main(int argc,char *argv[])
    {    
        int(*p)[10] = sum(b);
        int *a = *p;
        for (int i = 0; i < 10; i++)
            cout << *a++<< endl;;
        return 1;
    }
     
  • 相关阅读:
    如何编写linux下nand flash驱动-4
    Windows代码heap内存分析实战
    堆内存破坏检测实战--附完整调试过程
    排序算法:冒泡排序
    HDOJ 2802 F(N)
    HDOJ 1715 大菲波数
    HDOJ 1214 圆桌会议
    HDOJ 3466 Proud Merchants
    HDOJ 1215 七夕节
    HDOJ 2073 无限的路
  • 原文地址:https://www.cnblogs.com/mrlsx/p/5554278.html
Copyright © 2011-2022 走看看