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

    如果我们想定义一个返回数组指针的函数,则数组的维度必须跟在函数的名字之后,然而函数名字之后的是形参列表,所以形参列表应该在数组的维度之前。返回数组指针的函数形式如下所示:

    Type (*function (parameter_list)) [dimension]

    下面这个func函数的声明没有使用类型别名:

    int (*func (int i))[10];
    

    C++ 11 中可以使用尾置返回类型

    auto func(int i) -> int(*)[10];

    使用decltype

    如果我们知道函数返回的指针是指向哪个数组,就可以使用delctype关键字声明返回类型,例如,下面的函数返回一个指针,该指针根据参数i的不同指向两个已知数组中的某一个:

    int odd[]={1,3,5,7,9}
    int even[]={0,2,4,6,8}
    decltype(odd) * arrPtr(int i)
    {
         return (i%2)? &odd:&even;  
    }

    arrPtr使用关键字decltype表示它的返回类型是个指针类型,并且该指针所指的对象与odd的类型一致。因为odd是数组,所以arrPtr返回一个指向含有5个整数的数组和指针。有一个地方需要注意:

    decltype并不负责吧数组类型转换成对应的指针,所以decltype的结果是一个数组,要想表示arrPtr返回指针还必须在函数声明时加一个*符号。

  • 相关阅读:
    uva 11729 Commando War
    剑指offer 38 数字在排序数组中出现的次数
    剑指offer 35 第一个只出现一次的字符
    剑指offer 33 把数组排成最小的数
    剑指offer17 合并两个排序的链表
    跳台阶
    app上线
    剑指offer54 表示数值的字符串
    剑指offer49 把字符串转换成整数
    段错误
  • 原文地址:https://www.cnblogs.com/huangzhenxiong/p/7771604.html
Copyright © 2011-2022 走看看