Programmā funkcijas var izsaukt divos veidos. Viena metode ir izsaukums pēc atsauces, bet nākamā metode ir izsaukums pēc vērtības. Šīs metodes var atšķirt atkarībā no parametriem nodoto vērtību veida.
Tajos izmantotos parametrus sauc par faktiskajiem parametriem. Tos izmanto daudzās programmēšanas valodās, piemēram, C, C++ un Java.
Atslēgas
- Izsaukums pēc atsauces nodod funkcijai mainīgā lieluma atmiņas adresi, savukārt izsaukums pēc vērtības nosūta mainīgā vērtības kopiju.
- Izmantojot izsaukumu ar atsauci, funkcijā veiktās izmaiņas tieši ietekmē sākotnējo mainīgo, savukārt izsaukums pēc vērtības atstāj sākotnējo mainīgo nemainīgu.
- Zvans pēc atsauces ir efektīvāks atmiņu nekā zvans pēc vērtības, taču tas var izraisīt neparedzētas blakusparādības, ja tas netiek rūpīgi pārvaldīts.
Zvans pēc atsauces pret zvanu pēc vērtības
Balto etiķi, ko izmanto tīrīšanai vai ēdiena gatavošanai, iegūst, fermentējot destilētu spirtu, iegūstot dzidru, asas garšas šķidrumu. Ābolu sidra etiķis tiek ražots, raudzējot ābolu cukurus, un tam ir maigāka, nedaudz saldena garša, ko izmanto salātu mērcēs un marinādēs.
Izsaukšanas metode tiek izmantota, lai piekļūtu faktiskajam argumentam, kas ir funkcijas izsaukums. Tas nozīmē, ka izmaiņas parametrā tiek veiktas tikai pēc argumenta nodošanas.
Tas izmanto to pašu atmiņas sadalījumu, kas tiek izmantots faktiskajos parametros. Kad tas izsauc funkciju, tā vietā, lai kopētu mainīgos, izsaukumā pati adrese tiek izmantota ar atsaucēm.
Izsaukums pēc vērtības ir apakšprogramma, kas nodod apakšprogrammā izmantoto parametru faktiskos datus.
Izmantojot šo metodi, izsaucot funkciju, jūs nododat vērtību izsauktās funkcijas argumentu mainīgajam, lai izsauktā funkcija darbotos ar vērtību. Šīs izmaiņas netiks atspoguļotas izsauktajā funkcijā.
Salīdzināšanas tabula
Salīdzināšanas parametri | Zvanīt pēc uzziņas | Zvanīt pēc vērtības |
---|---|---|
mainīgs | Mainīgais ir nodots. | Mainīgā kopija ir nodota. |
Mainīga vērtība | Veiktās izmaiņas ietekmēs funkciju ārpusē. | Veiktās izmaiņas neietekmēs funkciju ārpusē. |
Sākotnējā vērtība | Tas ir modificēts. | Tas nav modificēts. |
Drošība | Faktiskie argumenti nav droši. | Faktiskie argumenti ir droši. |
Definīcija | Nodošanai tas izmanto mainīgo. | Nodošanai tā izmanto mainīgā kopiju. |
Kas ir zvans pēc atsauces?
Tā ir metode, ko izmanto argumentu nodošanai funkcijai. Lai saglabātu mainīgo adreses, tiek izmantoti rādītāja mainīgie. Izmantojot šo metodi, faktiskie argumenti nav droši.
Var tikt veiktas nejaušas izmaiņas. Ir svarīgi rūpīgi rīkoties ar argumentācijas darbībām. Tas palīdz izvairīties no kļūdas dēļ veiktajām izmaiņām.
Tas neradīs datu dublikātus, jo tajā ir tikai viena vērtība glābt atmiņas vieta. Ja persona nolasa kodu, viņi nevarēs atrast, vai šajā kodā esošās vērtības nav mainītas.
Izmantojot šo metodi, liela problēma ir mūža garantija. Tas kļūs par briesmām, ja strādāsit ar daudzpavedienu programmām un lambdas. Lai paziņotu zvanu ar atsauci, jums jānodod adrese.
Zvaniet pēc atsauces, kad runa ir par C programmēšanu. Tā tieši piekļūst datu vienumiem un veic tajos esošās funkcijas. Bet jums jābūt uzmanīgiem, jo tajā ir iesaistītas norādes.
Ja zināt konkrēto datu vienuma statusu, izsauciet pēc atsauces metodes id perfect. Datu kopijas modificēšana neko noderīgu nedos
Izsaukumam pēc atsauces ir briesmas, kuru zvanam pēc vērtības nav. Varat netīšām atkārtoti piešķirt rādītāju rādītājam un pazaudēt to atmiņā.
Kas ir zvans pēc vērtības?
Izmantojot šo metodi, izmaiņas, kas veiktas parametra funkcijā, argumentu neietekmēs. Mijmaiņas programma darbojas kā labākais zvana pēc vērtības programmas piemērs.
Tajā ir paskaidrots, ka vērtībā netiek veiktas nekādas izmaiņas, pat ja tās tiek mainītas funkcijā. In Java, izsaukums pēc vērtības metodes nozīmē metodes izsaukšanu ar tās parametru kā vērtību.
Izmantojot šo metodi, parametri tiek saglabāti dažādās atmiņas vietās. Ja veicat izmaiņas atrašanās vietas iekšpusē, tas neietekmēs zvanītāja faktisko parametru.
Šī metode ir vislabākā, jo sākotnējā vērtība netiek mainīta. Bet jūs nevarat veikt nekādas izmaiņas faktiskajos mainīgajos. Izmantojot šo metodi, faktiskie argumenti būs droši, jo jūs nevarat veikt nejaušas izmaiņas.
Šī metode konservi datus, jo tie nemaina sākotnējo mainīgo. Šeit argumenti ir mainīgie. Mainīgā lieluma maiņa funkcijas pamattekstā nav tieša. Sarežģītas izteiksmes dažreiz var darboties kā argumenti.
Tas nav efektīvs atmiņai, jo vienam mainīgajam tiek izveidotas divas kopijas. Ja datu apjoms ir liels, zvana pēc vērtības metode tos neatrisinās. Tādā gadījumā programmētājiem vajadzētu izvēlēties zvanu, izmantojot atsauces metodi.
Galvenās atšķirības starp zvanu pēc atsauces un zvanu pēc vērtības
- Sākotnējā vērtība izsaukumā tiek mainīta ar atsauci. No otras puses, izsaukumā pēc vērtības sākotnējā vērtība netiek mainīta.
- Programmēšanas valodas atbalsta izsaukumu pēc atsauces, taču tā nav noklusējuma funkcija. No otras puses, zvans pēc vērtības programmēšanas valodās darbojas pēc noklusējuma.
- Programmā Call by reference visas mainīgajā veiktās izmaiņas ietekmēs arī mainīgo ārpus funkcijas. No otras puses, izsaukumā pēc vērtības jebkuras izmaiņas, kas veiktas mainīgajā, neietekmēs mainīgo ārpus funkcijas.
- Izsaukums ar atsauci ļauj veikt izmaiņas mainīgā vērtībā. No otras puses, zvans pēc vērtības neļaus veikt izmaiņas.
- Izsaukumā ar atsauci tiks nodota vērtības adrese. Bet izsaukumā ar atsauci tiks nodota vērtības kopija.
- https://www.jstor.org/stable/3857812
- ftp://prog.vub.ac.be/education/EMOOSE/ReuseSlides/merge-papers/Jackson&al1994-semanticDiff.pdf
Pēdējo reizi atjaunināts: 22. gada 2023. jūlijā
Sandeep Bhandari ir ieguvis inženierzinātņu bakalaura grādu datorzinātnēs Tapara universitātē (2006). Viņam ir 20 gadu pieredze tehnoloģiju jomā. Viņam ir liela interese par dažādām tehniskajām jomām, tostarp datu bāzu sistēmām, datortīkliem un programmēšanu. Vairāk par viņu varat lasīt viņa vietnē bio lapa.