C 中变量声明中的括号
C 编程中出现了一个特殊的现象:将变量声明括在括号内的能力。这方面引起了人们的兴趣,引发了对其功能的质疑。
考虑代码片段:
<code class="cpp">int main() { int(s); }</code>
令人惊讶的是,这段代码创建了一个名为 s 的有效变量,促使进一步调查底层机制.
根据 C 标准中的 [dcl.meaning]:
“在声明 T D 中,其中 D 具有形式 ( D1 ),所包含的 declarator-id 的类型相同作为声明 T D1 中包含的 declarator-id 的类型。”
此语句表示括号不会更改嵌入的 declarator-id 的类型(在本例中为 s)。但是,它们可能会影响复杂声明符的绑定。
简单地说,括号可以包含 C 语法中的任何声明符。例如,在给定的代码中,s 是一个声明符,括号不会修改其含义。
在处理更复杂的场景时,括号的用处变得显而易见。考虑这个例子:
<code class="cpp">int * a [10]; // a is an array of ten pointers to int. int ( * b ) [10]; // b is a pointer to an array of ten ints.</code>
在这种情况下,括号可以有效地区分两种指针类型。没有它们,这些声明的解释将不清楚。
以上是C 变量声明中何时以及为何使用括号?的详细内容。更多信息请关注PHP中文网其他相关文章!