Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Argumenty jsou názvy hodnot předaných funkci voláním funkce. Parametry jsou hodnoty, které funkce očekává. V prototypu funkce obsahují závorky následující za názvem funkce úplný seznam parametrů funkce a jejich typů. Deklarace parametrů určují typy, velikosti a identifikátory hodnot uložených v parametrech.
Syntaxe
function-definition:
declaration-specifiers
volitattribute-seqvolitdeclaratordeclaration-listvolitcompound-statement
/*
attribute-seq je specifický pro Microsoft */
declarator:
pointer
volitdirect-declarator
direct-declarator: /* Deklarátor funkce */
direct-declarator
(
parameter-type-list
) /* Deklarátor nového stylu */
direct-declarator
(
identifier-list
volit) /* Deklarátor zastaralého stylu */
parameter-type-list: /* Seznam parametrů */
parameter-list
parameter-list
, ...
parameter-list:
parameter-declaration
parameter-list
,
parameter-declaration
parameter-declaration:
declaration-specifiers
declarator
declaration-specifiers
abstract-declarator
volit
Jedná se parameter-type-list o posloupnost deklarací parametrů oddělených čárkami. Tvar každého parametru v seznamu parametrů vypadá takto:
registervolittype-specifierdeclaratorvolit
Parametry funkce deklarované pomocí atributu auto generují chyby. Identifikátory parametrů se v těle funkce používají k odkazování na hodnoty předané funkci. Parametry můžete pojmenovat v prototypu, ale názvy končí oborem na konci deklarace. To znamená, že názvy parametrů se dají přiřadit stejným způsobem nebo jinak v definici funkce. Tyto identifikátory nelze znovu definovat v nejkrajnějším bloku těla funkce, ale dají se předefinovat ve vnitřních vnořených blocích, jako by seznam parametrů byl uzavřený blok.
Každému identifikátoru parameter-type-list musí předcházet odpovídající specifikátor typu, jak je znázorněno v tomto příkladu:
void new( double x, double y, double z )
{
/* Function body here */
}
Pokud se v seznamu parametrů vyskytuje alespoň jeden parametr, může seznam končit čárkou následovanou třemi tečkami (, ...). Tato konstrukce, označovaná jako "zápis tří teček", označuje proměnný počet argumentů funkce. Další informace naleznete v tématu Volání s proměnlivým počtem argumentů. Volání funkce však musí mít alespoň tolik argumentů, kolik má parametry před posledním čárkou.
Pokud funkci nepředáte žádné argumenty, nahradí se seznam parametrů klíčovým slovem void. Toto použití void se liší od jeho použití jako specifikátor typu.
Pořadí a typ parametrů, včetně jakéhokoli použití zápisu se třemi tečkami, musí být stejné ve všech deklaracích funkcí (pokud existuje) a v definici funkce. Typy argumentů po obvyklých aritmetických převodech musí být kompatibilní s typy odpovídajících parametrů. (Informace o aritmetických převodech najdete v obvyklých aritmetických převodech.) Argumenty za třemi tečkou nejsou zaškrtnuté. Parametr může mít jakýkoli základní typ, strukturu, sjednocení, ukazatel nebo pole.
Kompilátor provádí obvyklé aritmetické převody nezávisle na každém parametru a na každém argumentu, pokud je to nutné. Po převodu není žádný parametr kratší než intparametr a žádný parametr nemá float typ, pokud není explicitně zadán jako float v prototypu. To například znamená, že deklarování parametru jako char parametr má stejný účinek jako deklarování jako .int