如何声明一个函数返回一个指向函数的指针返回指向int [3]
我在尝试以下声明:
int (*(*((*foo)(const void *))()))[3];
和
int (*(*(*foo)(const void *)()))[3];
但编译器给我一个错误:
error: 'foo' declared as function returning a function
DEMO
在c ++中可以吗?
派生声明的工作方式是用声明中的新事物替换声明中的标识符。 例如,在这里的第一步,要从“指向int [3]的指针”到“函数返回指向int [3]的指针”,我们接受“指向int [3]的指针”,并将标识符更改为是一个函数声明符。
指向int [3]的指针: int(* name)[3];
一个函数返回:int(* name() )[3];
指向该指针的指针:int(* (* name) ())[3] - 否则所需的括号*
绑定到另一个*
而不是name
一个函数返回:int(*(* name() )())[3]
喜欢这个:
int (*(*f())())[10];
甚至更干净(有点):
using array_type = int (*)[10];
using return_type = array_type (*)();
return_type f();
使用cdecl。
cdecl> declare f as function returning pointer to function returning pointer to array 3 of int
int (*(*f())())[3]
链接地址: http://www.djcxy.com/p/78655.html
上一篇: How to declare a function return a pointer to function return pointer to int[3]