this文章末尾有声明extern int (x)[]
。括号是做任何事情还是只是为了混淆?
我的猜测是,括号x
是一个外部整数数组(这就是文章所说的内容),但没有那些x
将是一个外部整数数组。如果是这样,定义将如何不同?它们都不是int x[]
吗?
答案 0 :(得分:6)
区分两者的最简单方法是查看展示位置 类型说明符。如果类型说明符紧跟在a之后 左括号,该括号是函数的开头 描述符和类型是函数参数的一部分。空 括号也表示功能。否则括号是 分组(可能是不必要的,但最好是太多了 太少了)表达。
还要注意“外部int的数组”和“int的外部数组”完全相同 - “extern-ness”总是转到声明的对象,在这种情况下是一个数组。就个人而言,我认为描述它的第一种方式在技术上是不准确的,而且简直令人困惑。
答案 1 :(得分:1)
在这种情况下,paranthesis没有意义。通常,您对任一函数指针使用paranthesis或标记更强的绑定,因为所有Operators都具有不同的绑定级别。
extern
关键字标记,这只是一个声明,但这个数组的实际定义将发生在其他地方。