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