Monet ohjelmointikielet käyttävät toimintoja. Toiminto on joukko lauseita tietyn tehtävän suorittamiseksi. Pääkoodi voidaan jakaa useisiin toimintoihin ja kutsua niitä. Funktion kutsumiseen on kaksi tapaa, kuten puhelun arvo ja puhelun viittaus. Call by value -menetelmässä muuttujien kopioita siirretään funktioon. Jos toiminnon arvo muuttuu, se ei muuta alkuperäistä arvoa. Soitettaessa referenssinä funktion sisällä olevan muuttujan muutokset heijastavat alkuperäistä arvoa. avainero puhelun arvon ja puhelun viittauksen välillä on se, puheluarvon mukaan muuttujien kopio siirretään funktiolle ja kutsussa viitteellä, muuttujien osoitteet siirretään funktiolle. Tässä artikkelissa tarkastellaan eroa puhelun välillä ja puhelun perusteella.
1. Yleiskatsaus ja keskeiset erot
2. Mikä on Call by Value
3. Mikä on Call by Reference
4. Yhdenmukaisuudet puhelun perusteella ja puhelun perusteella
5. Vertailu rinnakkain - Call by Value vs. Call by Reference taulukkomuodossa
6. Yhteenveto
Kutsunarvon mukaan kopiot muuttujista siirretään funktiolle. Toiminto voi muuttaa kopioitua arvoa, mutta se ei muuta alkuperäistä arvoa. Tämä käsite voidaan ymmärtää helposti vaihtamalla kaksi numero-ohjelmaa. Katso alla olevaa C-ohjelmaa, joka on kirjoitettu Code Blocks -ympäristöllä.
Kuva 01: Ohjelma kahden numeron vaihtamiseen
Jäljempänä esitetyn ohjelman mukaan muuttujalla 'a' on arvo 20 ja muuttujalla 'b' on arvo 30. Kun kutsutaan swap (a, b) -toimintoa, nämä kaksi arvoa siirretään swap-toimintoon. Vaihtofunktiossa 'a' kopioidaan 'x' ja 'b' kopioidaan 'y'. Nyt 'x': llä on arvo 20 ja 'y': lla arvoa 30. Temp-muuttujaa käyttämällä kaksi arvoa vaihdetaan. Kun tulostetaan arvot 'x' ja 'y' vaihtotoiminnon sisällä, tulosteen arvo on 30 'x': lle ja 20 'y': lle. Kun vaihtotoiminnon suorittaminen on ohi, ohjaus palaa takaisin päätoimintoon. Tulostamalla päätoiminnossa 'a' ja 'b' arvot, tulokset ovat alkuperäisiä arvoja. Ne ovat 20 a: lle ja 30 b: lle. Vaihtotoiminnolla tehdyt muutokset eivät heijastu pääohjelmassa.
Kuva 02: Vaihto-ohjelman tulos
'x' ja 'y' vaihtotoiminnon sisällä ovat vaihdetut arvot, jotka ovat 30 ja 20, mutta näitä arvoja ei voida käyttää pääohjelmassa. Vaikka 'x': llä ja 'y': llä on vaihdetut arvot, ne ovat paikallisia muuttujia vaihdettavalle toiminnolle, eikä päätoiminto voi käyttää niitä. Tämän ongelman välttämiseksi voidaan käyttää puhelun avulla.
Tässä menetelmässä muuttujien osoitteet lähetetään funktiolle. Katso alla olevaa C-ohjelmaa, joka on kirjoitettu Code Blocks -ympäristöllä.
Kuva 03: Kahden numeron vaihtaminen osoittimilla
Alla olevan esimerkin mukaan arvon 'a' arvo on 20 ja arvon 'b' arvo on 30. Ohjelmoija voi lähettää kappaleiden 'a' ja 'b' sijasta lähettämättä 'a' ja 'b' -osoitteita. 'käyttämällä toimintoa, swap (& a, & b).
Kuva 04: Vaihto-ohjelman tulos osoittimien avulla
Vaihtotoiminnossa toiminnon tulisi käyttää osoittimia, koska osoitteet ohitetaan ja osoittimien tulisi pitää näitä osoitteita. Toiminnon sisällä 'a' -osoite kopioidaan x: ksi ja 'b' -osoite kopioidaan 'y' -osoitteeksi. Tem-muuttujaa käyttämällä 'x' ja 'y' arvot vaihdetaan. Tässä referenssimenetelmän mukaisessa puhelussa vaihtotoiminnon sisällä tapahtuvat muutokset heijastuvat pääohjelmassa. 'A' ja 'b' -arvojen tulostaminen pääosassa antaa vaihdetut arvot. Nyt 'a': n lähtö on 30 ja 'b' on 20. Koska funktio ottaa muuttujien osoitteen, toiminnon sisällä tehdyt muutokset vaikuttavat alkuperäisiin arvoihin.
Puheluarvo vs. soittoviittaus | |
Arvon mukaan, kopioiden muuttujat siirretään funktioon, joten toiminnon sisällä tehdyt muutokset eivät muuta alkuperäistä arvoa. | Viitekutsussa muuttujien osoite välitetään funktiolle, joten toiminnon sisällä oleville muuttujille tehdyt muutokset muuttavat alkuperäistä arvoa. |
Arvonmuutos | |
Soitetun arvon mukaan alkuperäinen arvo ei muutu. | Soitettaessa referenssinä alkuperäiset arvot muuttuvat. |
Soita arvon mukaan ja soita viittauksilla ovat menetelmiä kutsumiseen funktioon. Ero puheluarvon ja referenssipuhelun välillä on, että arvoltaan kutsussa muuttujien kopiot siirretään funktiolle ja kutsussa referenssinä, muuttujien osoitteet siirretään funktiolle. Puhelun arvon tai puhelun viittauksen käyttäminen riippuu suoritettavasta tehtävästä.
Voit ladata tämän artikkelin PDF-version ja käyttää sitä offline-tarkoituksiin lainaushuomautuksen mukaisesti. Lataa PDF-versio tästä Ero puhelun perusteella ja puhelun perusteella
1.Jaiswal, Haresh. “11 puhelun perusteella tai puhelun perusteella.” YouTube, YouTube, 24. joulukuuta 2015. Saatavilla täällä