Kezdőoldal » Számítástechnika » Programozás » Valaki eltudná mondani, mire...

Valaki eltudná mondani, mire és hogyan kell használni a mellékfüggvényeket C++ ban?

Figyelt kérdés
Bármiféle segítségnek örülnék, ezt vesszük programozáson de sehogy se tudom megérteni hogy ez az érték átvevős dolog hogyan működik

#programozás #C++ #mellékfüggvény #érték átadás #átveendő paraméter
2017. dec. 19. 19:14
1 2
 11/19 anonim ***** válasza:
100%

"A függvény és eljárás közt egy hatalmas nagy különbség van. Az eljárás egy cselekvéssorozatot ír le, amelynek során új állapot keletkezhet"

"A függvény pedig az eljárással ellentétben egy műveletet ír le, amelynek során mindig egy eredmény jön létre "


Valójában egyetlen apró különbség van a kettő között: Az eljárás nem ad vissza értéket, a függvény igen.

Amúgy pedig mindkettő meg tudja változtatni a program állapotát, igazából bármit csinálhat mindkettő, csak az eljárás nem tud kifejezésben szerepelni, tehát nincs értéke a hívó oldalon.


Nem véletlen, hogy pl. a C-ben csak a függvény fogalma létezik, nem tesznek különbséget a kettő között.

2017. dec. 20. 13:22
Hasznos számodra ez a válasz?
 12/19 A kérdező kommentje:
Akkor ha pl void Fuggveny(int blablabla) nak sincs visszatérési értéke, akkor az eljárás? Vagy az marad függvény?
2017. dec. 20. 16:32
 13/19 anonim ***** válasza:

C/C++/C#/Java nyelveken mindkettőt függvénynek hívják, az egyetlen különbség tényleg az, hogy van-e visszatérési érték (kiértékelődik-e kifejezéssé a függvényhívás).

Más nyelvekben ennél lehetnek nagyobb különbségek.

2017. dec. 20. 17:04
Hasznos számodra ez a válasz?
 14/19 anonim ***** válasza:

#12, Tök mindegy, minek hívod. Ne ragadj le az elnevezéseknél, semmi értelme. Azt jegyezd meg, hogy a függvény visszaad valami értéket.


void fv();

Ez egy olyan függvény, ami void-ot ad vissza, konkrétan a nagy semmit, és sima return; kell neki a visszatéréhez.

int fi();

Ennek pedig return 0; vagy ilyesmi alakú return kell.


Ezen kívül szerintem minden nyelvben írhatjuk ugyanazt mindkettőbe, egyedül a visszatérésnél ill. a hívási oldalon a kiértékelésnél van különbség.


Ezek működnek:

fv();

fi();

x = fi();

2017. dec. 20. 17:27
Hasznos számodra ez a válasz?
 15/19 A kérdező kommentje:
Köszönöm szépen mindenkinek a segítséget :D
2017. dec. 20. 18:30
 16/19 anonim ***** válasza:

Hitvita is ON!


Bár igazatok van abban, hogy egy függvény is megváltoztathatja a program állapotát, azonban programtervezési szempontból ez azt jelenti az esetek nagy részében, hogy annak a függvénynek mellékhatása van (mást is csinál, mint amit kellene neki), amit illik elkerülni.

2017. dec. 20. 19:08
Hasznos számodra ez a válasz?
 17/19 anonim ***** válasza:

Akkor vegyük mondjuk a malloc() függvényt. Vajon az a fő feladata, hogy számítson egy valamilyen memóriacímet? Hiszen azt adja vissza. Nem, a fő feladata a konkrét helyfoglalás heap-en, ami eléggé megváltoztatja a program állapotát, és hogy visszaadja a hely kezdőcímét.


Vagy mondjuk strcpy(). A visszaadott érték a lényeg? Nem, valójában csak az egyik paraméterét adja vissza úgy, ahogy kapta. A visszatérési értéke független a lényegi tevékenységétől.


Vagy printf(). Ez is függvény, visszaad egy értéket, mégis a legritkább esetben használjuk épp a visszatérő értéke miatt.


Sok esetben egy függvénnyel tevékenységeket hajtatunk végre, és a visszatérő érték csak azt jelzi, hogy sikerült-e vagy sem. Nem valamilyen érték kiszámítása a függvény feladata.


De fordítva is igaz. Pl. némelyik nyelvben (pl. régi Pascal) bizonyos feladatok eljárásként vannak megírva, amik konkrétan egy értéket adnak vissza, de úgy, hogy az egyik cím szerinti paraméterükbe írják az eredményt. Nem függvények, nem adnak vissza semmit, pedig az eredmény számítása és visszaadása a feladatuk.

2017. dec. 20. 21:49
Hasznos számodra ez a válasz?
 18/19 anonim ***** válasza:
#17 Nagyjából összefoglaltad, miért is irritál a C nyelv.
2017. dec. 20. 22:03
Hasznos számodra ez a válasz?
 19/19 anonim ***** válasza:

#18, Sajnálom, ha így érzed, de tiszteletben tartom a véleményed.


Egyébként ezek a látszólag kamu visszatérő értékek nagyon praktikusak, ha egymásba akarjuk ágyazni a függvényeket. Másra nem is jók, de arra nagyon.

Pl.

char str[8];

printf("%d",strlen(strcpy(str,"hello"));

2017. dec. 20. 22:26
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!