typedef int arrT[10]; using arrT=int[10];<span style="white-space:pre"> </span>//arrT的等价声明 arrT* func(int i);<span style="white-space:pre"> </span>//func返回一个指向含有10个整数的数组的指针
type (*function(parameter_list)) [dimension]
</pre><pre name="code" class="cpp">//func接受一个int类型的实参,返回一个指针,该指针指向含有10个整数的数组 auto func(int i) -> int(*)[10]
int odd[]={1,3,5,7,9};
int even[]={0,2,4,6,8};
//返回一个指针,该指针指向含有5个整数的数组
decltype(odd) *arrPtr(int i)
{
return (i%2)? &odd : &even; //返回一个指向数组的指针
}/*
* 功能:编写一个函数的声明,使其返回数组的引用并且该数组包含10个string对象。
* 时间:2014年5月24日21:29:16
* 作者:cutter_point
*/
/*
int odd[]={1,3,5,7,9};
int even[]={0,2,4,6,8};
//返回一个指针,该指针指向含有5个整数的数组
decltype(odd) *arrPtr(int i)
{
return (i%2)? &odd : &even; //返回一个指向数组的指针
}
*/
#include<iostream>
#include<cstring>>
using namespace std;
/*
typedef string bb[10];
//bb[10]={"aa","bb","cc","dd","ee","ff","gg","hh","ii","jj"};
using bb=string[10];
bb* buf1( )
{
return (string *)bb;
}
bb* (*buf2(const string y))[10]
{
return &bb;
}
auto buf3(int i) -> string (*)[10]
{
return &bb;
}
decltype(bb) *buf4(int i)
{
return &bb;
}
*/
/******************************************************/
//普通返回类型
string (*s1)[10];
string (*buf1())[10]
{
cout<<"This is s1!"<<endl;
return s1;
}
/******************************************************/
/*
//类型别名?这个我还写不出来,我也不知道为什么不行,我正在求助中ing...
typedef string s2[10];
using s2=string[10];
s2 *buf2()
{
cout<<"This is s2!"<<endl;
return &s2;
}
*/
/******************************************************/
//尾置返回类型
string s3[10];
auto buf3() -> string (*)[10]
{
cout<<"This is s3!"<<endl;
return &s3;
}
/******************************************************/
//decltype
string s4[10];
decltype(s4) *buf4()
{
cout<<"This is s4!"<<endl;
return &s4;
}
/******************************************************/
int main()
{
buf1();
buf3();
buf4();
return 0;
}
【足迹C++ primer】11、返回类型和return语句(1),布布扣,bubuko.com
【足迹C++ primer】11、返回类型和return语句(1)
原文地址:http://blog.csdn.net/cutter_point/article/details/26868957