[笔记]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};

猜你喜欢

转载自www.cnblogs.com/qiu00/p/11986528.html