三个函数,返回数组指针,效果是一样的
using arrT=int[10]
arrT* functions( arrT* arrs, size_t a_size){
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/