Share via


參數

引數是值的名稱,會由函式呼叫傳遞至函式。 參數是函式預期收到的值。 在函式原型中,函式名稱後面接著的括號會包含函式參數與及類型的完整清單。 參數宣告會指定參數中所儲存值的類型、大小和識別項。

語法

function-definition:
declaration-specifiers選擇attribute-seq選擇declaratordeclaration-list選擇compound-statement

/* attribute-seq 是 Microsoft 特定的 */

declarator:
pointer選擇direct-declarator

direct-declarator:/* 函式宣告子 */
direct-declarator(parameter-type-list) /* 新樣式宣告子 */
direct-declarator(identifier-list選擇)/* 過時樣式宣告子 */

parameter-type-list:/* 參數清單 */
parameter-list
parameter-list , ...

parameter-list:
parameter-declaration
parameter-list , parameter-declaration

parameter-declaration:
declaration-specifiers declarator
declaration-specifiersabstract-declarator選擇

parameter-type-list是以逗號分隔的參數宣告序列。 參數清單中每個參數的形式如下所示:

register選擇type-specifierdeclarator選擇

以 屬性宣告的 auto 函式參數會產生錯誤。 參數的識別項會在函式主體中用來參考傳遞至函式的值。 您可以在原型中為參數命名,不過名稱會在宣告結尾超出範圍。 這表示參數名稱可以在函式定義中以相同方式或不同方式指派。 這些識別碼不能在函式主體的最外層區塊中重新定義,但可以在內部巢狀區塊中重新定義,就像參數清單是封入區塊一樣。

中的每個 parameter-type-list 識別碼前面都必須加上其適當的類型規範,如下列範例所示:

void new( double x, double y, double z )
{
    /* Function body here */
}

如果參數清單中至少有一個參數發生,清單可以以逗號結尾,後面接著三個句點 (, ...) 。 這種建構稱為「省略符號標記法」,表示函式的可變引數數目。 (如需詳細資訊,請參閱 具有 Variable Number of Arguments.) 的呼叫。不過,對函式的呼叫必須至少具有與最後一個逗號之前的參數數目相同的引數。

如果沒有要傳遞至函式的引數,則參數清單會以關鍵字 void 取代。 這種 void 用法與其做為類型指定名稱的用法不同。

參數的順序和類型 (包括使用的省略符號標記法) 在所有函式宣告 (如果有的話) 和函式定義中必須相同。 一般算術轉換之後的引數類型必須與對應參數類型的指派相容。 (請參閱 一般算術轉換 ,以取得省略號之後的算術轉換.) 引數的相關資訊。 參數可以具有任何基本、結構、等位、指標或陣列類型。

編譯器會在每個參數和每個引數上分別執行一般算術轉換 (如有需要)。 轉換之後,除非在原型中明確指定 float 參數類型,否則沒有任何參數比 短 int ,而且沒有參數具有 float 型別。 例如,它表示將參數宣告為 char ,其效果與將其宣告為 int 相同。

另請參閱

C 函式定義