ITPub博客

首页 > 应用开发 > IT综合 > 【C++】函数返回数据指针的多种定义方式

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

原创 IT综合 作者:风尘_NULL 时间:2017-07-28 14:32:36 0 删除 编辑
三个函数,返回数组指针,效果是一样的
using arrT=int[10]
arrT
* functions(arrT* arrs,size_t a_size){
 int *p=(*arrs);
 for(int i=0;i<a_size;i++){
 std::cout<<i<<std::endl;</i<<std::endl;<>
 *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<a_size;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<a_size;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<<c<<std::endl;</c<<
 }
 for(auto c:(*q)){
 std::cout<<c<<std::endl;</c<<

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

 }
}

</a_size;i++){<>
</a_size;i++){<>
</a_size;i++){<>

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30221425/viewspace-2142728/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
腾讯科技(深圳)有限公司 DBA

注册时间:2015-04-24

  • 博文量
    76
  • 访问量
    238216