C 中變數宣告中的括號
C 程式設計中出現了一個特殊的現象:將變數宣告在括號內的能力。這方面引起了人們的興趣,引發了對其功能的質疑。
考慮程式碼片段:
<code class="cpp">int main() { int(s); }</code>
令人驚訝的是,這段程式碼創建了一個名為s 的有效變量,促使進一步調查底層機制.
根據C 標準中的[dcl.meaning]:
「在聲明T D 中,其中D 具有形式( D1 ),所包含的declarator-id 的類型相同作為聲明T D1 中包含的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中文網其他相關文章!