【C++】函数返回数据指针的多种定义方式

三个函数,返回数组指针,效果是一样的
using arrT=int[10]
arrT
* functions(arrT* arrs,size_t a_size){
 int *p=(*arrs);
 for(int i=0;i std::cout<
 *p=i;
 p++;
 //(*arrs)++会报lvalue required as increment operand错误,因为(*arrs)不是一个左值
 //*(*arrs)=i;
 //(*arrs)++;

 }
 return arrs;

}
 //*functions1(int (*p)[10],size_t a_size)表示可以对函数调用结果解引用,
//(*functions1(int (*p)[10],size_t a_size))[10]表示解引用调用函数结果之后,得到一个大小为10的数组


int (*functions1(int (*p)[10],size_t a_size))[10]{
 int *q=(*p);
 for(int i=0;i *q=i;
 q++;
 }
 return p;
}
//C++11标准
auto function2(int (*p)[10],size_t a_size)->int(*)[10]{
 int *q=(*p);
 for(int i=0;i *q=i;
 q++;
 }
 return p;

}

int main()
{
 int (*p)[10];
 int (*q)[10];
 int (*h)[10];
 int arrs[]={1,2,3,4,5,0,0,0,0,0};
 //不能是p=functions(arrs,10),因为是函数需要传一个数组指针而不是首地址指针
 p=functions(&arrs,10);
 q=functions1(&arrs,10);
 h=function2(&arrs,10);
 for(auto c:(*p)){
 std::cout<std::endl;
 }
 for(auto c:(*q)){
 std::cout<std::endl;

 }
 for(auto c:(*h)){
 std::cout<std::endl;

 }
}



        
请使用浏览器的分享功能分享到微信等