我好久没这么做了!
从foo
开始,然后向右转.
float * (*(*
foo()
)[SIZE][SIZE])()
foo是一个没有参数的函数...
不能向右走,因为有一个右括号.向左走:
float * (*(
* foo()
)[SIZE][SIZE])()
foo是一个没有返回指针的参数的函数
不能再往左走了,让我们穿过括号再往右走
float * (*
(* foo())
[SIZE][SIZE])()
float * (*
(* foo())[SIZE]
[SIZE])()
float * (*
(* foo())[SIZE][SIZE]
)()
foo是一个没有返回指针的参数的函数 to an array of SIZE arrays of SIZE ...
到达右括号,再次向左到达指针符号:
float * (
*(* foo())[SIZE][SIZE]
)()
foo是一个没有返回指针的参数的函数 to an array of SIZE arrays of SIZE pointers to ...
又是左括号,所以我们穿过它,再向右走:
float *
( *(* foo())[SIZE][SIZE])
()
float *
( *(* foo())[SIZE][SIZE])()
foo是一个没有返回指针的参数的函数 to an array of SIZE arrays of SIZE pointers to a function with no arguments...
直到最后
float * ( *(* foo())[SIZE][SIZE])()
foo是一个没有返回指针的参数的函数 to an array of SIZE arrays of SIZE pointers to a function with no arguments returning a pointer to float
不管是谁写的,请教他用typedef
:
// Function that returns a pointer to float
typedef float* PFloatFunc ();
// Array of pointers to PFloatFunc functions
typedef PFloatFunc* PFloatFuncArray2D[SIZE][SIZE];
// Function that returns a pointer to a PFloatFuncArray2D
PFloatFuncArray2D* foo();