A c. Függvények érvei c
Funkcióelméletek
referencia argumentumok
Argumentumok és helyi változók tárolására általában speciális memóriaterületet használnak - a verem. Mivel az ezzel járó műveletek meglehetősen lassúak, a nagyobb adatok jobbak a linkek vagy mutatók áthaladására, és a helyi változók dinamikus memóriát használnak.
függvényként
Mivel a függvény neve maga a mutató. akkor definiálhatunk olyan függvényeket, amelyek argumentumként más függvényeket veszünk.
argumentumokat az attribútum const
Nem szabad megfeledkeznünk arról, hogy a hivatkozások vagy mutatók segítségével történő argumentumok átadásával lehetőséget adunk a függvényben lévő objektumok megváltoztatására. Bizonyos esetekben szükség van, másokban nem. Az argumentum megváltoztatásának megakadályozása érdekében a const attribútumot használjuk.
alapértelmezett értékeket
A C ++ lehetővé teszi, hogy a függvény argumentumokat az alapértelmezett értékekre állítsa be. Az ilyen érveknek a lista végén kell lenniük. Az érték bármilyen típusú kifejezés lehet, amely az inicializálásra érvényes.
funkciók túlterhelése
A funkciók ugyanazt a nevet adhatják, ha különböző számú érv vagy különböző típusú argumentum van. Ezt nevezik túlterhelési funkciónak. Néha a túlterhelés megosztása és az alapértelmezett argumentumértékek névkonfliktust eredményezhetnek.
A túlterhelést az új függvénynevek generálásával hozza létre, az argumentumok számától és típusától függően. Minden fordítónak saját algoritmusa van a nevek előállítására. Ezért a könyvtáraknak a hordozhatóságuk érdekében történő fejlesztésekor csak a C függvényeket használják. A C szabvány szerint csak az aláhúzás adódik hozzá a függvénynevekhez. Az alábbiak a MinGw fordító által generált funkciók nevei. Nézze meg az objektumfájlok nevét (* .obj vagy * .o)
változó számú érv
A C ++-ban változó számú argumentummal működik. Például a konzol output kimenetének könyvtári funkciója printf. Egy változó számú argumentum megadásához használja az ellipszist. Legalább egy megnevezett argumentumnak kell lennie, amely általában meghatározza a meg nem nevezett argumentumok számát.
Másodszor, a legtöbb fordító esetében az argumentumok átvitelének módja nem módosítható (pl. Ne használja a függvény attribútumokat, mint a __fastcall). A nem nevesített érvek eléréséhez használja a stdarg.h fájlban definiált makrókat.