Många programmeringsspråk använder funktioner. En funktion är en uppsättning uttalanden för att utföra en specifik uppgift. Huvudkoden kan delas upp i flera funktioner och ringa dem. Det finns två sätt att ringa en funktion som att ringa för värde och ringa genom referens. I samtal med värderingsmetod överförs kopior av variabler till funktionen. Om det ändras värdet på funktionen ändras inte det ursprungliga värdet. Vid anrop som referens reflekterar variablerna i funktionen det ursprungliga värdet. De nyckelskillnad mellan call-by-call och call by reference är det, I samtal för värde överförs kopian av variabler till funktionen och i samtal genom referens skickas adresserna till variablerna till funktionen. I den här artikeln diskuteras skillnaden mellan call-by-call och call via referens.
1. Översikt och nyckelskillnad
2. Vad är Call by Value
3. Vad är Call by Reference
4. Likheter mellan Ring efter värde och Ring via referens
5. Jämförelse vid sida vid sida - Ring efter värde vs. Ring via referens i tabellform
6. Sammanfattning
I samtal för värde skickas kopior av variabler till funktionen. Funktionen kan ändra det kopierade värdet men det ändrar inte det ursprungliga värdet. Detta koncept kan lätt förstås genom att byta två talprogram. Se nedan C programmet skrivet med Code Blocks miljö.
Figur 01: Program för att byta två nummer
Enligt det nedan angivna programmet har variabeln 'a' värdet 20 och variabeln 'b' värdet 30. Vid anropsbyte (a, b), skickas dessa två värden till swap-funktionen. I swap-funktionen kopieras 'a' till 'x' och 'b' kopieras till 'y'. Nu har "x" värdet 20 och "y" har värde 30. Med hjälp av temp variabeln byts de två värdena. När du skriver ut värdet av 'x' och 'y' i den swap-funktionen kommer utmatningen att ge 30 för 'x' och 20 för 'y'. När swapfunktionen är slutförd återgår kontrollen till huvudfunktionen. Vid utskrift av värdena "a" och "b", i huvudfunktionen kommer resultaten att vara de ursprungliga värdena. De är 20 för 'a' och 30 för 'b'. Ändringar som gjorts med hjälp av bytesfunktion återspeglar inte i huvudprogrammet.
Figur 02: Utgång av bytesprogrammet
'x' och 'y' i swap-funktionen har swapped värden som är 30 och 20 men dessa värden kan inte användas i huvudprogrammet. Även om "x" och "y" har bytte värden, är de lokala variabler att byta funktion och kan inte nås av huvudfunktionen. För att undvika detta problem kan anrop via referens användas.
I denna metod skickas adresserna till variablerna till funktionen. Se nedan C programmet skrivet med Code Blocks miljö.
Figur 03: Byte av två nummer med hjälp av pekare
Enligt det givna exemplet nedan är värdet av 'a' 20 och värdet på 'b' är 30. I stället för att skicka kopior av 'a' och 'b' kan programmeraren skicka adresserna till 'a' och 'b 'använda funktionen, byt (& a, & b).
Figur 04: Utgång av bytesprogrammet med hjälp av pekare
I bytet bör funktionen använda pekare eftersom adresserna är godkända och adresserna bör hållas av pekare. Inuti funktionen kopieras adressen till 'a' till 'x' och adressen på 'b' kopieras till 'y'. Med hjälp av tempvariabeln bytas "x" och "y" -värdena. I detta samtal med referensmetoden återspeglar ändringarna i bytesfunktionen i huvudprogrammet. Att skriva ut värdena för "a" och "b" i huvudet kommer att ge de swapped värdena. Nu är utmatningen av 'a' 30 och 'b' 20. Eftersom funktionen tar adressen till variablerna påverkar ändringarna i funktionen de ursprungliga värdena.
Ring efter värde vs Ring via referens | |
I samtal för värde skickas kopior av variabler till funktionen, så ändringar som görs inuti funktionen, kommer inte att ändra det ursprungliga värdet. | Vid uppringning hänvisas variablernas adress till funktionen, så ändringar som görs för variabler inuti funktionen kommer att ändra det ursprungliga värdet. |
Värdeändring | |
I samtal för värde ändras det ursprungliga värdet inte. | Vid uppringning hänvisas de ursprungliga värdena. |
Ring efter värde och ring genom referens är metoder för att ringa funktionen. Skillnaden mellan att ringa för värde och ringa genom referens är att i värdet samtal skickas kopior av variabler till funktionen och i samtalet genom referens skickas adresserna till variablerna till funktionen. Använda samtal efter värde eller ring genom referens beror på vilken uppgift som ska utföras.
Du kan hämta PDF-versionen av den här artikeln och använda den för offlineändamål enligt citationsnotat. Var god ladda ner PDF-version här Skillnaden mellan Ring efter värde och Ring via referens
1.Jaiswal, Haresh. "11 Ring efter värde vs. Ring via referens." Youtube, YouTube, 24 december 2015. Tillgänglig här