Sok programozási nyelv használja a funkciókat. A függvény egy utasítások halmaza egy adott feladat végrehajtásához. A fő kód több funkcióra osztható, és felhívhatja őket. Kétféle módon lehet meghívni egy funkciót, például érték szerint hívás és referencia alapján történő hívás. Call by value módszernél a változók másolatait továbbítják a függvénybe. Ha megváltozik a funkció értéke, akkor az nem változtatja meg az eredeti értéket. Referenciahívásként a függvény változójának változásai tükrözik az eredeti értéket. Az kulcs különbség az érték és a referencia közötti hívás között ez az, érték szerint híváskor a változók másolatát továbbítják a függvényhez, és a hívás alapján hivatkozással a változók címeit továbbítják a függvényhez. Ez a cikk tárgyalja a különbséget a hívás érték és a referencia alapján.
1. Áttekintés és a legfontosabb különbség
2. Mi az a Call by Value
3. Mi az a Call by Reference
4. hasonlóságok a hívás érték szerint és a referencia alapján
5. Összehasonlítás - Call by Value vs Call by Reference táblázatos formában
6. Összegzés
Érték szerinti hívás esetén a változók másolatait továbbítják a függvényhez. A függvény megváltoztathatja a másolt értéket, de az eredeti értéket nem változtatja meg. Ez a koncepció könnyen megérthető két számú program cseréjével. Nézze meg a Code Blocks környezetben írt alábbi C programot.
01. ábra: Program két szám felcserélésére
Az alábbiakban megadott program szerint az 'a' változó értéke 20, a 'b' értéke pedig 30. Amikor a swap (a, b) funkciót hívják, ez a két érték átkerül a swap funkcióhoz. A swap funkcióban az 'a' másolódik 'x' -re, 'b' pedig 'y' -re. Most 'x' értéke 20, 'y' értéke pedig 30. A temp változóval a két értéket felcseréljük. Ha az „x” és az „y” értéket kinyomtatja a cserefunkción belül, akkor a kimenet 30-at ad x-ra, 20-ot pedig y-ra. Amikor a csere funkció végrehajtása befejeződött, a vezérlés visszatér a fő funkcióhoz. Az „a” és „b” érték nyomtatásakor a fő funkcióban az eredmények lesznek az eredeti értékek. 20 az „a” és 30 a „b” esetében. A swap funkcióval végrehajtott változtatások nem tükröződnek a főprogramban.
02 ábra: A csereprogram eredménye
Az „x” és az „y” a cserefüggvényben 30 és 20 közötti cserélt értékekkel rendelkezik, de ezek az értékek nem használhatók a főprogramban. Annak ellenére, hogy az 'x' és 'y' értékeinek cseréje van, azok a helyi változók a csere funkcióhoz, és a fő funkcióhoz nem férnek hozzá. A probléma elkerülése érdekében hívás alapján lehet felhasználni.
Ebben a módszerben a változók címeit elküldjük a függvénynek. Nézze meg a Code Blocks környezetben írt alábbi C programot.
03. ábra: Két szám cseréje mutatók segítségével
Az alábbi példa szerint az „a” értéke 20 és a „b” értéke 30. Az „a” és „b” másolatainak átadása helyett a programozó az „a” és „b” címeket küldheti el. 'a swap (& a, & b) függvény használatával.
04. ábra: A csereprogram kimenete mutatók segítségével
A csere során a függvénynek mutatókat kell használni, mert a címek átadódnak, és ezeket a címeket mutatóknak kell tartaniuk. A funkción belül az 'a' cím másolása 'x' -re és 'b' címe 'y' -re. A temp változó segítségével az 'x' és 'y' értékeket felcserélik. Ebben a referencia-módszerrel történő felhívásban a cserefunkción belüli változások tükröződnek a főprogramban. Az „a” és „b” értékek főnyomására történő kinyomtatása megkapja az átváltott értékeket. Most az 'a' kimenete 30 és 'b' 20. Mivel a függvény a változók címét veszi fel, a függvényen végrehajtott változtatások befolyásolják az eredeti értékeket.
Hívás érték szerint vs Hívás referencia szerint | |
Érték szerint híváskor a változók másolatai átkerülnek a függvénybe, így a függvényen végrehajtott változtatások nem módosítják az eredeti értéket. | Referenciahívás esetén a változók címe átkerül a függvényhez, tehát a függvényen belüli változókra végrehajtott változtatások módosítják az eredeti értéket. |
Érték módosítása | |
Hívásérték szerint az eredeti érték nem változik. | Referenciahívás esetén az eredeti értékek megváltoznak. |
Az érték szerinti hívás és a referencia alapján történő hívás a funkció meghívásának módszerei. Az érték szerinti hívás és a referencia szerinti hívás közötti különbség az, hogy érték szerinti hívásban a változók másolatait továbbítják a függvényhez, a referenciahívásban pedig a változók címeit továbbítják a függvényhez. A hívás érték szerint vagy a referencia alapján történő felhasználás az elvégzendő feladat függvénye.
Letöltheti e cikk PDF verzióját, és offline célokra felhasználhatja, az idézet megjegyzésének megfelelően. Kérjük, töltse le itt a PDF verziót. Különbség a hívás érték és a hívás referencia között
1.Jaiswal, Haresh. “11 hívás érték szerint vagy hívás referencia szerint.” Youtube, YouTube, 2015. december 24. Elérhető itt