using arrT=int[10]
arrT* functions(arrT* arrs,size_t a_size){
int *p=(*arrs);
for(int i=0;istd::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;
}
}