數組指針的聲明: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};