Függvények a C

H eszik többet tanulmányozzuk B, annál nagyobb a programot. Gyűjtjük az összes intézkedés egy fő funkciója, és többször másolja ugyanazokat a lépéseket, akkor létre több tucat változók egyedi nevek. A programok megduzzadnak és egyre kevésbé világos, elágazások egyre hosszabb és elágazó.

De ki ez a helyzet van egy út! Most majd megtanulják, hogyan kell létrehozni funkciók a BBC. Funkció egyrészt segít kiosztani külön rutinok kettős kód, másrészt segít logikusan osztja a program részekre, harmadszor, a funkciók B jár egy csomó funkciók, amelyek lehetővé teszik az új megközelítések strukturálása alkalmazásokat.

Funkció - megnevezett részét olyan program, amely lehet többször kérte egy másik része a programnak (mely ez a funkció nem látható). A funkció vehet egy fix vagy változó számú érv, és nem lehet érveket. A funkció sem ad vissza értéket, vagy legyen üres (void), és nem tért vissza.

Mi már ismerős sok a funkciók és tudja, hogyan kell hívni őket -. Ez a függvénykönyvtár stdio, StdLib, húr, conio stb Ezen kívül, a fő - ez is egy függvény. Ez abban különbözik a többitől, csak hogy ez a bejárat pont az alkalmazás indításakor.
Funkció B meghatározni a globális környezetben. A szintaxis a következő:

A legegyszerűbb példa - egy funkció, hogy vesz egy úszó és visszaadja a tér a száma

Bent a funkció sqr, hoztunk létre egy helyi változó, amely hozzá van rendelve az érték az érvelés. Mint argumentum egy függvény átadott száma 9.3. Hivatalos szó visszatérési értékét adja vissza a változó tmp. Funkció lehet újraírni az alábbiak szerint:

Ebben az esetben a szorzást végezzük el először, majd a visszatérési érték. Ebben az esetben, ha a függvény nem ad vissza, a visszatérési típus érvénytelen. Például, egy függvényt, amely kinyomtatja a tér a szám:

ebben az esetben azt jelenti, a visszatérés a kimeneti függvény. Ha a függvény nem ad vissza semmit, a visszatérés nem tud írni. Akkor a függvény befejezi vége előtt, és nem lesz visszatérés a vezérlést a hívó.

Ha a függvény nem vesz érvek, a zárójelben üresen maradt. Azt is írni a szót void:

Formális és aktuális paraméterek

Tegyük fel például, van egy funkciója, amely visszaadja a tér a számot, és a funkció, amely összead két számot.

Úgy vélem, hogy vonja prosihodit hallgatólagosan és csak akkor, ha ez lehetséges. Ha a függvény egy számot kap argumentumként, akkor lehetetlen, hogy átmenjen egy változó sztring, mint például a „20”, stb Általánosságban elmondható, hogy mindig jobb, hogy a megfelelő típusú, vagy kifejezetten öntött a megfelelő típust.
Ha a függvény egy értéket, akkor nem feltétlenül kell tárolni. Például, mi használjuk a getch funkció, amely beolvassa egy karaktert, és visszaadja az eredményt.

Átadás érvek

A számítási első paraméterátadási módszert úgynevezett transzfer érdemben, a második - továbbítását a mutatót. Ne feledje, egy egyszerű szabályt: ha meg akarja változtatni egy változó, akkor át kell mennie egy funkciót mutatót, amely változó. Ezért változtatni a mutató, akkor át kell mennie egy mutatót mutató, stb Például levelet funkció, amely elviszi a méret a tömb int típusú és hozza létre. Első pillantásra a funkciót kell kinéznie:

Megváltoztathatja az objektum, akkor meg kell felelnie egy mutatót meg, ebben az esetben - egy mutató a mutató.

Most minden működik, ahogy kellene.
Több hasonló példát. Írja meg a működést, mely egy string érvként és visszaad egy pointert a memória területet, ahol a húr van másolva.

Ez a vegyes rekurzió - páratlan függvény értéke 1, ha a szám páratlan és 0, ha még.

Hozzunk létre egy egyszerű könyvtár. Ehhez létre kell hozni két fájlt - egy kiterjesztése .h és tegye a függvény prototípusokat, és egy másik kiterjesztésű .c, és tegye a meghatározására, ezeket a funkciókat. Ha dolgozik a IDE a .h fájlt kell létrehozni a mappát header fájlokat és kódfájlokhoz a forráskód fájlokat. Üres nevű fájlt File1.h és File1.c
Átírni a korábbi kódot. Itt fog kinézni, mint egy header file File1.h

forrás fájl tartalmát File1.c

Fő funkciója

Tekintsük a funkciók minden fájlt. A fájl, amely tartalmazza a fő funkciója, hogy tartalmazza a szükséges könyvtár és header file File1.h. Ezután a fordítóprogram ismert függvény prototípusokat, hogy van, aki ismeri a visszatérési típusa, száma és típusa érvek és a funkció nevét.

Header fájlt, ahogy korábban említettük, tartalmazza a függvény prototípus. Is, ott lehet csatlakoztatni a könyvtárak. Makrozaschita #define _FILE1_H_ stb Arra használják, hogy megakadályozzák újra copy könyvtár kódot fordításkor. Ezek a vonalak helyettesíteni lehet egy

Transzfer a tömb, mint egy érv

S már korábban említettük, a tömb neve helyett egy mutatót, így a transzfer a egydimenziós tömb megegyezik az átviteli mutatót. Példa: A függvény megkapja a tömb és annak mérete és nyomatok:

Ebben a példában, a függvény lehet az űrlap

Szintén emlékeztetni arra, hogy a szabály a helyettesítés a tömb mutató nem rekurzív. Ez azt jelenti, hogy meg kell határozni a méretét a kétdimenziós tömböt az átviteli

Vagy, akkor írj

Ha egy kétdimenziós tömböt dinamikusan létrehozott, akkor át egy mutató a mutató. Például egy funkciója, amely egy sor szavak és vissza egy tömbben egész amelyek hosszával megegyező minden szó:

Akkor inkább vissza mutató tömb, át egy tömb kell tölteni

Ebben az első találkozás a funkció befejeződik: a téma nagyon nagy, és több cikkre bontották.

ru-Cyrl 18- bemutató Sypachev S. S. 1989/04/14 [email protected] Stepan Sypachev diákok