8

There is declaration extern int (x)[] at the end of this article. Are the parentheses doing anything or they are just for confusion?

My guess would be that with parentheses x is an array of external integers (and that's what the article says), but without those x would be an external array of integers. If this is true, how would the definitions differ? Wouldn't they both be int x[]?

4

2 回答 2

6

不,parens 在那里没有做任何事情。您链接到的文章解释了原因:

区分两者的最简单方法是查看类型说明符的位置。如果类型说明符紧跟在左括号之后,则该括号是函数描述符的开头,并且类型是函数参数的一部分。空括号也表示函数。否则括号是对表达式的分组(可能是不必要的,但最好是太多而不是太少)。

另请注意,“外部整数数组”和“外部整数数组”是完全相同的东西——“外部性”总是指向被声明的对象,在这种情况下是一个数组。就我个人而言,我认为描述它的第一种方式在技术上是不准确的,而且只是令人困惑。

于 2013-08-05T14:21:58.057 回答
1

在这种情况下,括号没有意义。通常,您对函数指针使用括号或标记更强的绑定,因为所有运算符都有不同的绑定级别。
关键字标记,这extern只是一个声明,但这个数组的实际定义将发生在其他地方。

于 2013-08-05T14:22:11.993 回答