1.(*func())代表函数func返回的是一个指针
2.返回类型先看右边,[]:表示返回数组指针,(int,int)表示返回函数指针
3.再看左边确定数组元素和函数返回的类型
// 返回指向维度为1的数组的指针,参数是维度为1的数组指针
int (*func(int (*a)[1]))[1]{
int (*p)[1] = a;
(*p)[0] = 10;
return p;
}
// 返回一个返回类型为int的函数指针
int (*func_(int i))(int,int);
// 尾置返回类型
auto func1(int (*a)[1]) ->int (*)[1]{
int (*p)[1] = a;
(*p)[0] = 10;
return p;
}
// 二级指针
auto func2(int (*a)[1]) ->int**{
int *q = a[0];
int **p = &q;
return p;
}
// typedef 简化代码,声明Arr是一个维度为1的数组
typedef int Arr[1];
Arr* func3(Arr* a){
int (*p)[1] = a;
(*p)[0] = 10;
return p;
}
// 函数指针声明
// (*p)(int (*a)[1])代表一个函数指针,可以用变量名func表示,返回类型同上
int (*(*p)(int (*a)[1]))[1]= func1; ==》 int (*func)[1]= func1;
int** (*q)(int (*a)[1]) = func2;