C-编程语言中的复杂声明

时间:2016-11-16 12:44:54

标签: c

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

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

我想知道如何确定宣布的内容 另外,由于这个问题在接受采访时被问到我,我想知道这些代码是否实际用于软件行业?

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

1 个答案:

答案 0 :(得分:9)

简单地将声明分成几部分 最内侧的大括号:(* f [3])表示' f'是一个由3个元素组成的数组,是指针。

( *f )()表示' f'是指向函数的指针,所以
( * f[3] ) ()表示f是一个3个指向函数的数组。

( * ( * f[3] ) ())表示f是一个包含3个指针的数组,用于返回指针。

因此,

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

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

相关问题