Sdílet prostřednictvím


Parametry

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-specifiersopt opt declarator declaration-list attribute-seq compound-statement

/* attribute-seq je specifický pro Microsoft */

declarator:
pointervolit direct-declarator

direct-declarator: /* Deklarátor funkce */
direct-declarator ( parameter-type-list ) /* Deklarátor nového stylu */
direct-declarator ( identifier-listopt ) /* Zastaralé deklarátor stylu */

parameter-type-list: /* Seznam parametrů */
parameter-list
parameter-list , ...

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

parameter-declaration:
declaration-specifiers declarator
declaration-specifiersabstract-declaratorvolit

Jedná se parameter-type-list o posloupnost deklarací parametrů oddělených čárkami. Tvar každého parametru v seznamu parametrů vypadá takto:

registeropt opt type-specifier declarator

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 najdete v tématu Volání s proměnný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ů. (Viz Obvyklé aritmetické převody pro informace o 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

Viz také

Definice funkcí jazyka C