我遇到了一个非常复杂的声明,我无法理解:
char ( * ( * f[3]) ()) [5] ;
我想知道如何确定正在声明什么。此外,由于这个问题是在面试中问我的,所以我想知道这些类型的代码是否真的在软件行业中使用?
如果不是,那么问这个问题的目的是什么?
我遇到了一个非常复杂的声明,我无法理解:
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 个字符的数组的指针。 - Sourav Ghosh