C++ 这一复杂声明的意义
考虑以下声明:C++ 这一复杂声明的意义,c++,function,pointers,return,C++,Function,Pointers,Return,考虑以下声明: double(*foo(double (*)(double, double[]), double)) (double, ...) 用英语描述foo的类型 这是一个家庭作业问题。我的分析是: "foo is a function pointer to a function that has as it's first argument, another function pointer to a function that returns a double and ta
double(*foo(double (*)(double, double[]), double)) (double, ...)
- 用英语描述foo的类型李>
"foo is a function pointer to a function that has as it's first argument,
another function pointer to a function that returns a double and takes a
double and an array of doubles."
是这样吗?有人能用英语简化并指定正确/准确的表达方式吗?提前谢谢 请这样看:
double(*foo(double (*)(double, double[]), double)) (double, ...);
== double(*foo(FUNC_PTR, double)) (double, ...)
where FUNC_PTR is of the form => double(*)(double first_arg, double[] second_arg)
应用,记住向右、向左、向右、向左等,在退出括号之前始终执行括号中的任何操作:
double(*foo(double (*)(double, double[]), double)) (double, ...)
^^^
foo
是
double(*foo(double (*)(double, double[]), double)) (double, ...)
^------------------------------------^
foo
是一个函数
double(*foo(double (*)(double, double[]), double)) (double, ...)
^
double(*foo(double (*)(double, double[]), double)) (double, ...)
^^^^^^^^^^^^^^^^
double(*foo(double (*)(double, double[]), double)) (double, ...)
^^^^^^^^^^^
foo
是一个函数,它将指针指向
double(*foo(double (*)(double, double[]), double)) (double, ...)
^----------------^
foo
是一个指向函数的指针的函数
double(*foo(double (*)(double, double[]), double)) (double, ...)
^
double(*foo(double (*)(double, double[]), double)) (double, ...)
^^^^^^^^^^^^^^^^
double(*foo(double (*)(double, double[]), double)) (double, ...)
^^^^^^^^^^^
foo
是一个函数,它的指针指向一个采用double
的函数,指针指向一个double
(“double数组”,如果你想给它加糖衣的话)
foo
是一个函数,它使用a(指向函数的指针使用double
,指向返回double
)的double
)和double
double(*foo(double (*)(double, double[]), double)) (double, ...)
^
foo
是一个函数,它接受一个(指向接受double
的函数的指针,以及指向返回double
的double
的指针)和一个返回指向
double(*foo(double (*)(double, double[]), double)) (double, ...)
^-----------^
foo
是一个函数,它接受(指向接受double
的函数的指针,以及指向返回double
的double
的指针)和返回函数指针的double
double(*foo(double (*)(double, double[]), double)) (double, ...)
^
double(*foo(double (*)(double, double[]), double)) (double, ...)
^^^^^^^^^^^^^^^^
double(*foo(double (*)(double, double[]), double)) (double, ...)
^^^^^^^^^^^
foo
是一个函数,它接受一个(指向接受double
的函数的指针,以及指向返回double
的double
的指针)和一个返回指向接受double
的函数的double
指针以及任何
double(*foo(double (*)(double, double[]), double)) (double, ...)
^^^^^^
foo
是一个函数,它使用a(指针指向使用double
的函数,指针指向返回double
的double
)和double
的函数,指针指向使用double
的函数和任何返回double
的函数
将整个过程插入到中会得到以下结果(除了它不喜欢省略号参数):
将foo声明为函数(指向函数的指针(double,double的数组)返回double,double)返回指向函数的指针(double,…)返回double
请回答以下问题:
foo
的类型是“由于可怕的代码无法通过我的团队的代码审查而过度指定的,实际上可能会让你被解雇”。任何专业人士都可以验证。