我遇到了一个我无法理解的非常复杂的声明:
char ( * ( * f[3]) ()) [5] ;
我想知道如何确定宣布的内容 另外,由于这个问题在接受采访时被问到我,我想知道这些代码是否实际用于软件行业?
如果没有,那么问的目的是什么?
答案 0 :(得分:9)
简单地将声明分成几部分
最内侧的大括号:(* f [3])表示' f'是一个由3个元素组成的数组,是指针。
( *f )()
表示' f'是指向函数的指针,所以
( * f[3] ) ()
表示f是一个3个指向函数的数组。
( * ( * f[3] ) ())
表示f是一个包含3个指针的数组,用于返回指针。
因此,
char ( * ( * f[3] ) ()) [5] ;
表示f是一个包含3个指向函数的数组,返回一个指向5个字符数组的指针