C++ 返回指向数组的指针

返回值为指向数组的指针的目前所有方法,解释在注释里,接下来上代码

//返回数组指针

#include<iostream>
using namespace std;
int iarr1[] = { 1,2,3,4,5 };
int iarr2[] = { 6,7,8,9,10 };
//传统类型别名声明
typedef int parr1[5];
//C++11类型别名声明
using parr2 = int[5];
parr1 *fun1(int i);
parr2 *fun2(int i);
//直接声明
int(*fun3(int i))[5];
//使用尾值返回类型//C++11
auto fun4(int i)->int(*)[5];
//使用decltype
decltype (iarr1)*fun4(int i);
parr1 *fun1(int i)
{
    return (i % 2) ? &iarr1 : &iarr2;
}
parr2 *fun2(int i)
{
    return (i % 2) ? &iarr1 : &iarr2;
}
int (*fun3(int i))[5]
{
    return (i % 2) ? &iarr1 : &iarr2;
}
auto fun4(int i)->int(*)[5]
{
    return (i % 2) ? &iarr1 : &iarr2;
}
decltype (iarr1) *fun5(int i)
{
    return (i % 2) ? &iarr1 : &iarr2;
}
int main()
{
    int (*p1)[5] = fun1(1);
    int *pbeg = begin(*p1);
    int *pend = end(*p1);
    for (; pbeg != pend; ++pbeg)
        cout << *pbeg <<endl;
    system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值