Minden C program függvénygyűjtemény. Tudjon meg mindent ezekről a hasznos újrafelhasználható kóddarabokról, a definiálásuktól kezdve egészen az üresség jelentéséig.

Lehet, hogy egyszerű példákkal foglalkozott az alapvető C szintaxissal, és most azon töpreng, hogyan hozzon létre nagyobb, valós programokat. Kezdetben érdemes a kódot hatékony részekre rendezni, minimális ismétlés mellett. A C nyelvben, mint a legtöbb nyelvben, a probléma megoldása a függvény.

A függvények létrehozása és használata C nyelven egyszerű, és számos előnnyel jár. A funkciók lehetővé teszik az összetett programok kisebb részekre bontását. Újrafelhasználhatóságot biztosítanak mind az eredeti programon belül, mind a kapcsolódó könyvtárakban vagy más különálló programokban.

A kezdéshez meg kell tanulnia a függvénydeklarációkat, a prototípusokat, a paramétereket és a return utasításokat.

Mik a függvények C-ben?

C programozásban, a függvény a kód egy elnevezett szakasza, amely végrehajt valamit, amikor Ön kéri. Segít rendszerezetten tartani a kódot, és lehetővé teszi ugyanazt a műveletet többször is anélkül, hogy megismételné magát.

A legegyszerűbb példa az, amelyet már használt: a main() függvény. A fő funkció különösen különleges, mert minden C program fő belépési pontjaként működik. Használhat olyan könyvtári függvényeket is, amelyeket valaki más már írt, vagy írhat saját, felhasználó által definiált függvényeket.

Funkciók: Deklaráció, Meghatározás és Hívás

Ez a három szempont alapvető a függvények használatában.

Funkciónyilatkozat

Ez információt nyújt a függvény nevéről, visszatérési típusáról és paramétereiről, lehetővé téve a funkció használatát a teljes definíció előtt. Funkció prototípusnak is nevezik. Ezt az egyszerű szintaxist követi:

return_type function_name(parameters);

Ahol:

  • return_type a függvény által visszaadott érték adattípusa. Lehet bármilyen érvényes C adattípus ill üres ha a függvény nem ad vissza értéket.
  • függvény_neve az a név, amelyet a függvénynek adsz. Ezzel később meghívhatja a függvényt.
  • paramétereket a függvény által elfogadott bemeneti paraméterek listája, ha vannak ilyenek. Minden paraméter egy adattípusból áll, amelyet egy paraméternév követ vesszővel elválasztva.

Például itt van egy egyszerű függvénydeklaráció:

intadd(int a, int b);

Funkció meghatározása

Amikor meghív egy függvényt, az a definíciójában megadott kódot futtatja. Tartalmazza a függvény nevét, visszatérési típusát, paraméterlistáját és a működését meghatározó utasításokat. Íme a szintaxis:

return_type function_name(parameters){
// Function body - code that defines what the function does
// Return a value if applicable
return value;
}

Bontsuk fel a szintaxis részeit:

Funkciótest: Ez a kapcsos zárójelek közé zárt kódblokk {}. Tartalmazza azokat az utasításokat, amelyek meghatározzák, hogy a függvény mit csináljon, amikor meghívásra kerül.

Visszáru nyilatkozat: Ha a függvénynek más visszatérési típusa van, mint üres, a Visszatérés utasítás értéket küld vissza a hívónak. Ennek az értéknek meg kell egyeznie a megadott visszatérési típussal.

Íme egy egyszerű példa egy függvénydefinícióra:

intadd(int a, int b){
int sum = a + b;
return sum;
}

Funkcióhívás

Csakúgy, mint a főzéshez, előfordulhat, hogy receptje (a funkció meghatározása) és néhány összetevője (érvei) van, de az eredmény eléréséhez továbbra is követnie kell az utasításokat. A függvényhívás adott argumentumokkal futtatja a függvényt; itt a szintaxis:

return_type result = function_name(arguments);

érvek: Ezek azok az értékek vagy kifejezések, amelyeket bemenetként ad át a függvénynek. Az egyes argumentumokat vesszővel válassza el. Az argumentumok számának, sorrendjének és adattípusának meg kell egyeznie a függvény paraméterlistájával.

eredmény: Ha a függvénynek más visszatérési típusa van, mint üres, a visszaadott értéket a megfelelő adattípusú változó segítségével rögzítheti.

Íme egy példa egy függvényhívásra:

#include

// Function prototype
intadd(int a, int b);

intmain(){
int x = 5, y = 3;

// Call the function and store the result in 'sum'
int sum = add(x, y);
printf("The sum of %d and %d is %d\n", x, y, sum);
return0;
}

// Function definition
intadd(int a, int b){
return a + b;
}

Ezt a három lépést követve – a függvény deklarálása, megvalósításának biztosítása és meghívása megfelelő érvekkel – hatékonyan használhatja a függvényeket különféle feladatok végrehajtására program.

Funkcióparaméterek és visszatérési értékek

A paraméterek a függvény deklarációjában vagy definíciójában deklarált változók, amelyek híváskor a függvénynek átadott értékek helyőrzőiként működnek. Lehetővé teszik az adatok átadását a függvénynek, lehetővé téve az adatok kezelését és kezelését. A visszatérési értékek azok az értékek, amelyeket egy függvény előállít, és visszaküld a hívónak.

A paraméterek átadásának két módja van.

Pass by Value

Ezzel a megközelítéssel a függvényhívás bemásolja az aktuális argumentum értékét a függvény paraméterébe. A függvényen belül a paraméterben végrehajtott változtatások nem befolyásolják az eredeti argumentumot.

Például:

#include

intsquare(int num){
num = num * num;
return num;
}

intmain(){
int x = 5;
int y = square(x);

// Output: x and y after function call: 5 25
printf("x and y after function call: %d %d\n", x, y);

return0;
}

  • A négyzetfüggvény egy egész szám paramétert vesz fel, sz.
  • A négyzetfüggvény kiszámítja a szám négyzetét, frissíti az értékét, és visszaadja ezt az új értéket.
  • A fő függvény egy egész változót deklarál, x, és 5 értéket rendel hozzá.
  • Ezután meghívja a négyzetfüggvényt, átadva neki x értékét. Az eredményt egy második változóhoz rendeli, y.
  • A függvényhívás után a main kiírja x és y értékét. Az x érték változatlan marad, mert a négyzeten belüli num paraméter megváltoztatása nem befolyásolja az eredeti x-et.

Pass by Reference

Ezzel a megközelítéssel átadja egy érték memóriacímét (mutatóját) egy függvénynek. A függvényen belüli paraméterben végrehajtott változtatások a függvényen kívüli eredeti értéket érintik.

A mutatók, beleértve azok paraméterként való használatát, az egyik szempont C, amelyek különböznek egy olyan nyelvtől, mint a Python.

#include

voidsquare(int *num){
*num = *num * *num;
}

intmain(){
int x = 5;
square(&x);

// Output: x after function call: 25
printf("x after function call: %d\n", x);
return0;
}

  • A négyzet függvény egy egész mutatót vesz fel (int *) paraméter, sz. Nem ad vissza értéket.
  • A négyzetfüggvény kiszámítja annak az értéknek a négyzetét, amely sz tartalmazza és frissíti ezt az értéket a mutató hivatkozási operátorával, *.
  • A fő- függvény egész változót deklarál, x, és hozzárendeli az értéket 5.
  • Ezután hívja a négyzet függvényt egy mutatóval x az operátor címének használatával: &x.
  • A függvényhívás után a main kiírja az értékét x, ami most van 25 a változások óta *szám benne négyzet funkció befolyásolja az eredetit x.

Összefoglalva, a fő különbség a két módszer között az, hogy a függvényen belüli paraméter változtatásai hogyan befolyásolják a függvényen kívüli eredeti értéket. Az érték átadása másolatot hoz létre, míg az átadás hivatkozással (mutató) lehetővé teszi az eredeti érték közvetlen manipulálását.

Más nyelvek gyakran rendelkeznek a C mutatóinak megfelelővel, de általában magasabb szinten működnek. Az egyik példa az A C# támogatja az out változókat.

Üres funkciók

Az üres függvények a C programozásban olyan függvények, amelyek nem adnak vissza értéket. Használja őket műveletek vagy feladatok végrehajtására eredmény nélkül. Megváltoztathatják a paramétereiket a pass by reference használatával, de nem kell.

Íme egy példa egy üres függvényre:

#include

// Void function with no parameters
voidgreet(){
printf("Hello, MUO!");
}

intmain(){
// Call the void function, output: "Hello, MUO!"
greet();

return0;
}

Az érvénytelen funkciók hasznosak műveletek végrehajtásához, üzenetek nyomtatásához, adatok módosításához vagy feladatok végrehajtásához visszatérési érték nélkül.

Fedezze fel a C programozás funkcióit

A függvények létrehozásán keresztüli gyakorlás javítja a C programozás megértésének és alkalmazásának megértését. Ezenkívül javítja a kód olvashatóságát és megkönnyíti a karbantartást. Merüljön el a funkciók különféle alkalmazásaiban, hogy kiaknázhassa előnyeiket.

Ha elsajátította a C függvények alapjait, és kihívást szeretne tenni önmagának, fontolja meg a rekurzióval való elmélyülést.