c++primer学习志函数返回数组指针或引用

1.通过类型别名

typedef int arrT[10];//arrT是一个类型别名,它表示的类型是一个含有10个整数的数组
using arrT=int [10];//同上
arrT*func(int);//返回一个指向含有10个整数的数组的指针
arrT &func(inti);//返回一个指向含有10个整数的数组的引用

2.不使用类型别名直接返回
如果我们想定义一个返回数组指针或引用的函数,则数组的维度必须跟在函数名字之后。然而,函数的参数列表也跟在函数名之后且在数组维度之前。

//函数形式如下
type(*function(paramter_list))[dimension];
type(&function(paramter_list))[dimension];
//举例
int(*func(int i))[10];
//由内而外理解其含义
func(int i)//表示func函数需要一个类型为int的形参
(*func(int i))//表示我们可以对函数调用的结果执行解引用操作
(*func(int i))[10]//表示我们解引用操作的结果是一个大小是10的数组
//引用以此类推

3.使用尾置返回类型
任何函数的定义都可以使用尾置返回,但这种形式对于复杂的函数最有效,比如返回类型是数组的指针或引用。尾置返回类型跟在形参列表后面并以一个->符号开头

//func接受一个int类型的实参,返回一个指针,该指针指向一个大小为10的数组
auto func(int i)->int(*)[10];
//返回一个引用
auto func(int i)->int(&)[10];

4.使用decltype
如果我们指导函数返回的指针指向的数组大小和类型,就可以使用decltype关键字声明返回类型

int odd[]={1,3,5,7,9};
int even[]={0,2,4,6,8};
decltype(odd)*arrptr(int i)
{
    return(i%2)?&obb:&even;
}
decltype(odd)&arrptr(int i)
{
    return(i%2)?obb:even;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值