返回值为指向数组的指针的目前所有方法,解释在注释里,接下来上代码
//返回数组指针
#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;
}