參數
引數是由函式呼叫傳遞至函式的值名稱。 參數是函式預期會收到的值。 在函式原型函式名稱後面的括號會包含完整的函式的參數和其型別的清單。 參數宣告指定型別、 大小及參數中所儲存數值的識別項。
語法
函式定義:
宣告規範選擇屬性 seq 選擇宣告子宣告清單選擇複合陳述式/ * 屬性 seq 為 Microsoft 特定 * /
宣告子 :
指標選擇直接宣告子直接宣告子: / * 函式宣告子 * /
直接宣告子**(** 參數型別清單**)** / * 新樣式宣告子 * /參數型別清單: / * 參數清單 * /
參數清單參數清單**、...**
參數清單:
參數宣告參數清單**,** 參數宣告
參數宣告:
宣告規範宣告子宣告規範抽象宣告opt
參數型別清單就是一連串以逗號分隔的參數宣告。 參數清單中的每個參數的形式如下所示:
[register] type-specifier [declarator]
以宣告的函式參數自動屬性會產生錯誤。 識別項的參數用於函式主體參考傳遞至函式的值。 您可以指定名稱的原型中的參數,但名稱超出範圍,在宣告結尾處。 因此參數名稱可被指派相同方式或以不同方式在函式定義中。 這些識別項不能重新定義函式主體中,最外層區塊中,但他們可以重新定義內部的巢狀區塊中就好像參數清單所包含的區塊。
在每個識別項參數型別清單前面必須加上其適當的型別規範中,如本例所示:
void new( double x, double y, double z )
{
/* Function body here */
}
發生一個以上的參數在參數清單中時,清單可以使用逗號,後面接著三個句號構成結尾 (、...). 這個建構,稱為 「 省略符號表示法 」,表示多個函式的引數。 (請參閱呼叫變數數字的引如需詳細資訊。) 不過,函式的呼叫必須要有最小數目的引數的最後一個逗號之前的參數。
如果沒有指定引數傳遞給函式,關鍵字所取代的參數清單void。 這種void不同於其做為型別規範。
順序和型別參數,包括任何使用省略符號表示法中,必須是相同的所有函式宣告中 (如果有的話),並在函式定義中。 引數之後一般的算數轉換必須是相容的型別與對應參數的型別。 (請參閱一般的算數轉換的算數轉換的詳細資訊。) 不會檢查引數後面的省略符號。 參數可以有任何項基本原則,結構、 等位,指標或陣列型別。
編譯器會執行一般的算數轉換獨立地在每個參數和每個引數,如有必要。 轉換後,沒有參數小於int,且沒有參數浮點數中輸入,除非明確指定的參數型別浮點數在原型中。 這表示,例如,宣告參數,以做為char有相同的效果,做為宣告成int。