函数“int(* function())[10];”意思?

时间:2013-06-09 18:10:39

标签: c++ c

我读了一段代码,发现有类似的功能。

int (*function())[10]{
 ...
}

我很困惑。这个函数意味着什么,它将返回什么?

3 个答案:

答案 0 :(得分:16)

函数的定义返回一个指向10个整数数组的指针。

请记住,返回值是指针,而不是实际数组。无法从函数返回数组。根据标准8.3.5 / 8的规定:

  

函数不应具有类型数组或函数的返回类型,尽管它们可能具有类型指针的返回类型或对此类事物的引用

以下是一个如何使用它的简单示例:

int arr[10];     // an array of 10 int
int (*ptr)[10]; // pointer to an array of 10 int

int (*function())[10] // function returning a pointer to an array of 10 int
{
    return ptr;
}

int main()
{
    int (*p)[10] = function(); // assign to the pointer
}

您可以在通常使用指针的地方使用它。但请注意,除了指针之外,还有更好的选择,例如std::shared_ptr<std::array<T, N>>std::shared_ptr<std::vector<T>>

答案 1 :(得分:8)

阅读它的方法是找到最左边的标识符并解决问题,记住()之前[]*绑定,所以*a[]是一个数组对于指针,(*a)[]是指向数组的指针,*f()是返回指针的函数,(*f)()是指向函数的指针。因此,

      function          - function
      function()        - is a function
     *function()        - returning a pointer
    (*function())[10]   - to a 10-element array
int (*function())[10]   - of int

答案 2 :(得分:0)

这意味着它是一个函数指针,参数为void并返回int [10]