[笔记]C++声明返回数组指针的函数
数组指针的声明:type (*name)[size];
由于数组不能拷贝,所以函数不能返回数组。但是函数可以返回指针和引用,所以函数可以返回数组指针或引用。
和数组指针的声明类似:
type (*funName(parameter_list))[dimension];
//例
int p[10]; int (*arr)[10]=&p; //数组指针arr int (*function(int *list))[10] { return arr; //返回数组指针 }
依据由内向外的原则来分析,function首先是一个函数,其参数是int *,其返回类型是指针,指针的类型是大小为10的整型数组。
使用尾置返回类型可以声明
auto function_1(int *list) -> int (*)[10] // ->指定函数返回类型为数组指针 { return arr; }
使用decltype类型推断来声明
decltype(arr) function_2(int *list) //decltype根据arr推断出返回类型为指针数组 { return arr; }
定义返回数组指针的函数的指针
int (*(*pfunc)(int *list))[10] = &function; //函数指针数组 int (*(*arryfunc[10])(int *))[10]={&function, NULL};