C语言中的复杂声明

C语言中的复杂声明,c,C,我遇到了一个非常复杂的声明,我无法理解: char ( * ( * f[3]) ()) [5] ; 我想知道如何确定要声明的内容。 另外,由于这个问题是在一次采访中向我提出的,我想知道这些代码是否在软件行业中实际使用过 如果没有,那么询问的目的是什么?只需将声明分成几个部分。 最里面的一对大括号:(*f[3])表示“f”是一个由3个元素组成的数组,这些元素是指针。 (*f)(表示“f”是指向函数的指针,因此 (*f[3])()表示f是一个由3个指向函数的指针组成的数组 (*(*f[3])()表

我遇到了一个非常复杂的声明,我无法理解:

char ( * ( * f[3]) ()) [5] ;
我想知道如何确定要声明的内容。
另外,由于这个问题是在一次采访中向我提出的,我想知道这些代码是否在软件行业中实际使用过


如果没有,那么询问的目的是什么?

只需将声明分成几个部分。
最里面的一对大括号:(*f[3])表示“f”是一个由3个元素组成的数组,这些元素是指针。

(*f)(
表示“f”是指向函数的指针,因此
(*f[3])()
表示f是一个由3个指向函数的指针组成的数组

(*(*f[3])()
表示f是一个由3个指针组成的数组,函数返回指针

因此,

char ( * ( * f[3] ) ()) [5]  ;

表示f是一个由3个指向函数的指针组成的数组,返回一个指向5个字符数组的指针

将其键入….
f
是一个由3个指向函数的指针组成的数组,每个返回指针指向一个
5
字符数组。它包括一个不推荐使用的非原型风格的函数声明。这些复杂语句不用于实时编码。其目的是测试您对运算符及其优先级的专门知识:)