Daugelis programavimo kalbų naudoja funkcijas. Funkcija yra teiginių rinkinys, skirtas atlikti tam tikrą užduotį. Pagrindinį kodą galima suskirstyti į keletą funkcijų ir paskambinti joms. Yra du būdai, kaip paskambinti funkcijai, pavyzdžiui, skambinti pagal vertę ir skambinti pagal nuorodą. Taikant skambučio pagal vertę metodą, kintamųjų kopijos perduodamos į funkciją. Jei pasikeičia funkcijos vertė, ji nekeičia pradinės vertės. Kreipiantis pagal nuorodą, funkcijos viduje esančio kintamojo pokyčiai atspindi pradinę vertę. pagrindinis skirtumas tarp skambučio pagal vertę ir skambučio pagal nuorodą yra tai, esant skambučiui pagal vertę, kintamųjų kopija perduodama funkcijai, o kvietimui - nuoroda, kintamųjų adresai perduodami funkcijai. Šiame straipsnyje aptariamas skirtumas tarp skambučio vertės ir skambučio pagal referenciją.
1. Apžvalga ir svarbiausias skirtumas
2. Kas yra skambučio vertė
3. Kas yra skambutis pagal nuorodą
4. Skambučio pagal vertę ir skambučio pagal referenciją panašumai
5. Lyginimas viena šalia kitos - skambučio pagal vertę ir skambučio pagal nuorodą lentelės forma
6. Santrauka
Skambučio pagal vertę kintamųjų kopijos perduodamos funkcijai. Funkcija gali pakeisti tą nukopijuotą vertę, tačiau ji nepakeičia pradinės vertės. Ši sąvoka gali būti lengvai suprantama keičiant dviejų skaičių programą. Peržiūrėkite žemiau pateiktą C programą, parašytą naudojant „Code Blocks“ aplinką.
01 paveikslas: Programa, skirta pakeisti du skaičius
Pagal toliau pateiktą programą kintamojo „a“ reikšmė yra 20, o kintamojo „b“ vertė - 30. Kai šaukiama apsikeitimo (a, b) funkcija, šios dvi vertės perduodamos apsikeitimo funkcijai. Atliekant apsikeitimo funkciją, „a“ nukopijuojamas į „x“, o „b“ - į „y“. Dabar „x“ vertė 20, o „y“ vertė 30. Naudojant temp kintamąjį, dvi vertės keičiamos. Kai toje apsikeitimo funkcijoje atspausdinsite „x“ ir „y“ reikšmes, išvestis duos 30 „x“ ir 20 „y“. Kai apsikeitimo funkcijos vykdymas baigtas, valdiklis grįžta į pagrindinę funkciją. Pagrindinėje funkcijoje spausdinant reikšmes „a“ ir „b“, rezultatai bus originalūs. Jie „20“ reiškia „a“ ir 30 - „b“. Pakeitimai, atlikti naudojant mainų funkciją, pagrindinėje programoje neatsispindi.
02 paveikslas: Mainų programos rezultatas
„x“ ir „y“ apsikeitimo funkcijos viduje turi apsikeitimo reikšmes, kurios yra 30 ir 20, tačiau šios vertės negali būti naudojamos pagrindinėje programoje. Nors „x“ ir „y“ vertės yra sukeistos, jie yra vietiniai kintamieji keičiant funkciją ir negali būti prieinami pagrindinei funkcijai. Norėdami išvengti šios problemos, gali būti naudojamas skambinimas pagal nuorodą.
Taikant šį metodą funkcijai siunčiami kintamųjų adresai. Peržiūrėkite žemiau pateiktą C programą, parašytą naudojant „Code Blocks“ aplinką.
03 pav. Dviejų skaičių keitimas naudojant rodykles
Pagal pateiktą žemiau pateiktą pavyzdį, „a“ reikšmė yra 20, o „b“ - 30. Užuot perdavęs „a“ ir „b“ kopijas, programuotojas gali siųsti „a“ ir „b“ adresus. 'naudojant funkciją, sukeisti (ir a, ir b).
04 paveikslas: Apsikeitimo programos rezultatas naudojant rodykles
Keičiant, funkcija turėtų naudoti rodykles, nes adresai perduodami, o tuos adresus turėtų laikyti rodyklės. Funkcijos viduje „a“ adresas nukopijuojamas į „x“, o „b“ adresas nukopijuojamas į „y“. Naudojant temp kintamąjį, keičiamos „x“ ir „y“ vertės. Šiame kvietime naudojant pamatinį metodą mainų funkcijos pokyčiai atsispindi pagrindinėje programoje. Jei atspausdinsite reikšmes „a“ ir „b“, gausite sukeistas vertes. Dabar „a“ išvestis yra 30, o „b“ yra 20. Kadangi funkcija atsižvelgia į kintamųjų adresus, funkcijos viduje atlikti pakeitimai turi įtakos pradinėms reikšmėms..
Skambučio vertė pagal skambučio vertę | |
Jei skambinama pagal vertę, kintamųjų kopijos yra perduodamos į funkciją, taigi funkcijos viduje atlikti pakeitimai pradinės vertės nepakeis. | Kreipiantis pagal nuorodą, kintamųjų adresas perduodamas funkcijai, todėl atlikus pakeitimus funkcijos viduje kintamieji pakeis pradinę vertę. |
Vertės keitimas | |
Skambučio pagal vertę pradinė vertė nesikeičia. | Kreipiantis dėl nuorodos, pradinės vertės keičiasi. |
Skambinimas pagal vertę ir skambinimas pagal nuorodą yra funkcijos iškvietimo metodai. Skirtumas tarp skambučio pagal vertę ir skambučio pagal referenciją yra tas, kad skambučio pagal vertę kintamųjų kopijos perduodamos funkcijai, o kvietime pagal referenciją kintamųjų adresai perduodami funkcijai. Skambučio pagal vertę arba skambučio pagal nuorodą naudojimas priklauso nuo užduoties, kurią atliksite.
Galite atsisiųsti šio straipsnio PDF versiją ir naudoti ją neprisijungus, kaip nurodyta citatos pastaboje. Atsisiųskite PDF versiją čia. Skirtumas tarp skambučio pagal vertę ir skambučio pagal nuorodą
1.Jaiswal, Haresh. „11 skambučio pagal vertę arba skambučio pagal referenciją“. „YouTube“, „YouTube“, 2015 m. Gruodžio 24 d. Galima rasti čia