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

Mur*_*ris 13 c c++

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

int (*function())[10]{
 ...
}
Run Code Online (Sandbox Code Playgroud)

我很迷惑.这个功能意味着什么,它将返回什么?

0x4*_*2D2 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
}
Run Code Online (Sandbox Code Playgroud)

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

  • @NikosC.`int(*arr)[10] = function();` (2认同)

Joh*_*ode 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
Run Code Online (Sandbox Code Playgroud)