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中文網其他相關文章!