本文介绍了对于返回函数指针的函数的C语法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
考虑以下类型定义:
typedef int (*f1)(float);
typedef f1 (*f2)(double);
typedef f2 (*f3)(int);
F2
是返回一个函数指针的函数。与 F3
,但函数的类型相同,指针到 F3
的回报,是 F2
。我如何定义 F3
没有的typedef?我知道类型定义是清洁和更容易理解的方式来定义 F3
。不过,在这里我的目的是要了解C语法更好。
f2
is a function that returns a function pointer. The same with f3
, but the type of the function, the pointer to which f3
returns, is f2
. How can I define f3
without the typedefs? I know typedefs are the cleaner and easier to understand way to define f3
. However, my intention here is to understand C syntax better.
推荐答案
开始您的声明 F1
:
int (*f1)(float);
您想 F2
是指向一个函数返回 F1
,所以替代 F1
与上述声明的声明 F2
:
You want f2
to be a pointer to a function returning f1
, so substitute f1
in the declaration above with the declaration for f2
:
int (* f1 )(float);
|
+-----+-----+
| |
v v
int (*(*f2)(double))(float);
该声明全文
f2 -- f2
*f2 -- is a pointer
(*f2)( ) -- to a function
(*f2)(double) -- taking a double parameter
*(*f2)(double) -- returning a pointer
(*(*f2)(double))( ) -- to a function
(*(*f2)(double))(float) -- taking a float parameter
int (*(*f2)(double))(float) -- returning int
您重复该过程 F3
:
int (*(* f2 )(double))(float);
|
+---+----+
| |
v v
int (*(*(*f3)(int))(double))(float);
行文
f3 -- f3
*f3 -- is a pointer
(*f3)( ) -- to a function
(*f3)(int) -- taking an int parameter
*(*f3)(int) -- returning a pointer
(*(*f3)(int))( ) -- to a function
(*(*f3)(int))(double) -- taking a double parameter
*(*(*f3)(int))(double) -- returning a pointer
(*(*(*f3)(int))(double))( ) -- to a function
(*(*(*f3)(int))(double))(float) -- taking a float parameter
int (*(*(*f3)(int))(double))(float); -- returning int
这篇关于对于返回函数指针的函数的C语法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!