首頁  >  文章  >  後端開發  >  `widget w(gadget(), doodad());` 是 C 中的變數宣告嗎?

`widget w(gadget(), doodad());` 是 C 中的變數宣告嗎?

Linda Hamilton
Linda Hamilton原創
2024-11-19 07:53:02875瀏覽

Is `widget w(gadget(), doodad());` a Variable Declaration in C  ?

C 最令人煩惱的解析已解決

問題出現在如下程式碼:

widget w(gadget(), doodad());  // Pitfall: Not a Variable Declaration

一個問題出現在如下程式碼中:

一個可能會假設此程式碼正在宣告一個名為w 的widget 類型的變數。然而,事實並非如此。
widget w(gadget(*)(), doodad(*)());

在 C 中,數組類型的參數衰減為指向第一個元素的指針,函數類型的參數衰減為函數指針。這意味著所聲明的函數的簽名為:

該函數有兩個參數:一個是指向不帶參數並返回小工具的函數的指針,另一個是指向函數的指針不接受任何爭論並返回一個小玩意。函數本身傳回一個小部件。
widget w(gadget(x));

當額外的括號新增函數參數時,會出現更令人困惑的情況,如:

這看起來應該宣告一個名為x 的變數類型gadget,但它實際上聲明了一個函數,該函數採用第一個名為x 的gadget 類型參數並傳回一個小部件。

以上是`widget w(gadget(), doodad());` 是 C 中的變數宣告嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn