我阅读了一段代码,并发现有一个像这样的函数。
int (*function())[10]{
...
}
我感到困惑,这个函数是什么意思,它会返回什么?
我阅读了一段代码,并发现有一个像这样的函数。
int (*function())[10]{
...
}
我感到困惑,这个函数是什么意思,它会返回什么?
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>>
。int (*arr)[10] = function();
- David Gint (*(*f()))[10];
。 - David Gint (*(*f())())[10];
。 - David G阅读它的方式是找到最左边的标识符并向外工作,记住()
和[]
在*
之前绑定,因此*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
f
替换 function()
,得到 int (*f)[10]
;现在它看起来不那么奇怪了。 - John Bode这意味着它是一个函数指针,参数为void,返回值为int[10]