3.10.2 复杂的声明和定义
另一方面,一旦知道C和C++声明语法是如何工作的,就能够创建许多复杂的条目。例如:
对于每一条,使用先右后左的原则去推断。
第1行说明:“fp1是一个指向函数的指针,该函数接受一个整型参数并返回一个指向含有10个void指针数组的指针。”
第2行说明:“fp2是一个指向函数的指针,该函数接受三个参数(int、int和float)且返回一个指向函数的指针,该函数接受一个整型参数并返回一个flaot。”
如果创建许多复杂的定义,可以使用typedef。第3行显示了每次typedef是如何缩短复杂定义的。它说明:“fp3是一个指向函数的指针,该函数无参数,且返回一个指向含有10个指向函数指针数组的指针,这些函数不接受参数且返回double值。”然后它又说明:“a是fp3类型中的一个。”typedef在用简单描述构建复杂描述时通常是很有用的。
第4行不是变量定义而是一个函数定义。它说明:“f4是一个返回指针的函数,该指针指向含有10个函数指针的数组,这些函数返回整型值。”
我们可能很少甚至是从未使用过如此复杂的声明和定义。但如果通过练习能把它搞清楚的话,就不会被在现实生活中可能遇到的稍微复杂的情况所困惑。