Funkció meghatározása
Most, hogy átmentünk néhány mintán, nézzük meg a függvénydefiníció általános formáját:
void function-name() { Változók deklarációi stb. Kifejezések... //nem szükséges kifejezett visszatérés. }
A függvény nem ad vissza különleges értéket, és nem ad vissza bejövő paramétereket.
void függvénynév(adattípusú változó) { Változók deklarációi stb. Kifejezések... //nem szükséges kifejezett visszatérés. } Ha több változót szeretne, egyszerűen használja a "," elválasztóként:
Egy függvény nem ad vissza speciális értéket, csak egy paraméterrel.
void függvénynév (adattípusú változó, adattípusú változó stb.) { Változók deklarációi stb. Kifejezések... //nem szükséges kifejezett visszatérés. }
Egy függvény nem ad vissza speciális értéket, de egynél több paraméterrel.
void függvénynév (adattípusú változó, adattípusú változó stb.) { Változók deklarációi stb. Kifejezések... visszatérési érték }
A függvény egy adott adattípus értékét adja vissza, és egynél több paraméterrel.
A vissza függvény típusának meg kell egyeznie a függvény által visszaadott visszatérési érték adattípusával . A visszatérési érték lehet állandó érték vagy változó. Meg kell előznie a „return kulcsszót.”
A következő szabályok szabályozzák a visszaküldés típusát:
- A visszatérési típusra szinte nincs korlátozás, kivéve a tömböt. (A tömb egy másik fejlettebb téma az adatok létrehozásával kapcsolatban. Ez kívül esik ennek a cikknek a hatályán, és itt nem foglalkozik vele.
- A „void” visszatérési típus megadása azt jelenti, hogy nincs szükség visszatérési értékre. A „visszatérés” záradék implicit. Ez azt jelenti, hogy az „érvénytelen” függvény végén kifejezetten meg kell adni a „return” szót.
Függvény létrehozása a main() előtt vagy után?
A fordító felülről lefelé olvassa be a fájlt. Tehát a sorrend számít.
Vegyük például az egyszerű legnagyobb közös nevező (GCD) függvényt. Hibaüzenet jelenik meg: deklarálatlan azonosító használata getGCD'
Valójában ez igaz, függetlenül attól, hogy a fő( ) vagy más hívó funkcióblokkból származik, azaz a „hívott funkcióblokknak” meg kell előznie a „hívó funkcióblokkot”.
Két lehetséges megoldás:
int getGCD(int a, int b) { int maradék = 1; while (fennmaradó > 0) { maradék = a % b ; a = b; b = maradék; } return a; } int main() { Brain.Screen.printAt (5,60, "GCD ( %d, %d ) = %d”, getGCD(60, 100) ); }
Helyezze a „hívott függvényt” a „hívó függvényblokk” fölé a „main().” példában.
int getGCD(int, int); int main() { Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) ); } int getGCD(int a, int b) { int remainder = 1; while (remainder > 0) { remainder = a % b; a = b; b = remainder; } return a; }
Tegye a függvény prototípusát (más néven aláírást) a „hívás funkcióblokk” elé.
Mi a teendő, ha modularizálni szeretné a funkciókat különböző fájlokban?
1. lépés: Hozzon létre egy fejlécfájlt, és helyezze el ebbe a fájlba a függvény prototípusát.
például. hozzon létre egy „myFuncs.h” nevű fájlt
Ezt a fejlécfájlt hozzá kell adnia a projekthez, mielőtt lefordítaná a kódot. Ez lehetővé teszi a VEXcode Pro V5 IDE számára, hogy „tudatában legyen” ennek az új fejlécfájlnak, mielőtt elkezdi felépíteni a projektjét.
Íme, hogyan:
Ebben a „common.h” fejlécfájlban (bármit elnevezhet, ha alfanumerikus, szóköz nélkül).
2. lépés: Hozzon létre egy külön cpp-fájlt, például common.cpp néven
//ez a common.cpp fájl int getGCD(int a, int b) { int maradék = 1; while (maradék > 0) { maradék = a % b ; a = b; b = maradék; } return a; }
Helyezze át a getGCD(...) függvényt ebbe a fájlba
#include "vex.h" #include "common.h" a vex névtér használatával; int main() { vexcodeInit(); Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) ); }
Most már minden, ami a fő cpp fájlban van, a következőkből áll
Hivatkozás: https://api.vexcode.cloud /v5/html/namespacevex.html
A jövőbeni témákkal a Tudásbázis fejlettebb részei foglalkoznak a jövőben:
- Pass by value vs. Pass by reference
- Passz egy tömbben
- Passz egy szerkezetben