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

三个函数,返回数组指针,效果是一样的
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博客 ” ,链接:http://blog.itpub.net/30221425/viewspace-2142728/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30221425/viewspace-2142728/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值