Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az argumentumok olyan értékek nevei, amelyeket függvényhívások adnak át egy függvénynek. A paraméterek azok az értékek, amelyeket a függvény elvár. A függvény prototípusában a függvény nevét követő zárójelek tartalmazzák a függvény paramétereinek és típusainak teljes listáját. A paraméterdeklarációk a paraméterekben tárolt értékek típusait, méretét és azonosítóit határozzák meg.
Szemantika
function-definition:
declaration-specifiers
választattribute-seqválasztdeclaratordeclaration-listválasztcompound-statement
/*
attribute-seq Microsoft-specifikus */
declarator:
pointer
választdirect-declarator
direct-declarator: /* Függvénydeklarátor */
direct-declarator
(
parameter-type-list
) /* Új stílusú deklarátor */
direct-declarator
(
identifier-list
választ) /* Elavult stílusú deklarátor */
parameter-type-list: /* A paraméterlista */
parameter-list
parameter-list
, ...
parameter-list:
parameter-declaration
parameter-list
,
parameter-declaration
parameter-declaration:
declaration-specifiers
declarator
declaration-specifiers
abstract-declarator
választ
Ez parameter-type-list a paraméterdeklarációk vesszővel elválasztott sorozata. A paraméterlistában szereplő paraméterek formája a következőképpen néz ki:
registerválaszttype-specifierdeclaratorválaszt
Az attribútummal auto deklarált függvényparaméterek hibát okoznak. A függvény törzsében a paraméterek azonosítói a függvénynek átadott értékekre hivatkoznak. A paramétereket elnevezheti egy prototípusban, de a nevek a deklaráció végén kimennek a hatókörből. Ez azt jelenti, hogy a paraméternevek ugyanúgy vagy más módon rendelhetők hozzá a függvénydefinícióban. Ezek az azonosítók nem definiálhatók újra a függvény törzsének legkülső blokkjában, de belső beágyazott blokkokban újradefiniáltak, mintha a paraméterlista egy beágyazó blokk lenne.
Minden egyes parameter-type-list azonosítót meg kell előznie a megfelelő típuskijelölővel, ahogyan az ebben a példában látható:
void new( double x, double y, double z )
{
/* Function body here */
}
Ha a paraméterlistában legalább egy paraméter szerepel, a lista vesszővel, majd három ponttal (, ...) végződhet. Ez a "három pont jelölésének" nevezett konstrukció a függvény argumentumainak változó számát jelzi. További információ: Változó számú argumentummal rendelkező hívások. A függvény hívásának azonban legalább annyi argumentumot kell tartalmaznia, mint amennyi paraméter az utolsó vessző előtt van.
Ha nem ad át argumentumokat a függvénynek, a paraméterek listáját a kulcsszó voidváltja fel. Ez a void használat eltér a típusjelölőként való használattól.
A paraméterek sorrendjének és típusának, beleértve a három pont jelölésének bármilyen használatát, meg kell egyeznie az összes függvénydeklarációban (ha van ilyen) és a függvénydefinícióban. A szokásos aritmetikai átalakítások utáni argumentumtípusoknak hozzárendelés-kompatibilisnek kell lenniük a megfelelő paraméterek típusaival. (Az aritmetikai konverziókkal kapcsolatos információkért tekintse meg a szokásos aritmetikai konverziókat .) A három pontot követő argumentumok nincsenek bejelölve. A paraméterek bármilyen alapvető, szerkezetű, egyesítő, mutató vagy tömb típusúak lehetnek.
A fordító a szokásos számtani átalakításokat egymástól függetlenül hajtja végre az egyes paramétereken és az egyes argumentumokon, ha szükséges. Az átalakítás után egyetlen paraméter sem rövidebb, mint egy intparaméter, és egyetlen paraméter sem rendelkezik float típussal, kivéve, ha a paramétertípus explicit módon van megadva, mint float a prototípusban. Ez azt jelenti például, hogy egy paraméter char deklarálása ugyanolyan hatással van, mint inta deklarálás.