Panggilan dengan Referensi vs Panggilan dengan Nilai: Perbedaan dan Perbandingan

Fungsi dapat dipanggil dengan dua cara dalam sebuah program. Salah satu metode adalah panggilan berdasarkan referensi, dan metode selanjutnya adalah panggilan berdasarkan nilai. Metode-metode ini dapat dibedakan berdasarkan jenis nilai yang diteruskan ke parameter.

Parameter yang digunakan di dalamnya disebut parameter aktual. Mereka digunakan dalam banyak bahasa pemrograman seperti C, C ++, dan Java.

Pengambilan Kunci

  1. Call by reference meneruskan alamat memori variabel ke fungsi, sementara call by value mengirimkan salinan nilai variabel.
  2. Dengan pemanggilan berdasarkan referensi, perubahan yang dibuat dalam suatu fungsi secara langsung memengaruhi variabel asli, sementara pemanggilan berdasarkan nilai membuat variabel asli tidak berubah.
  3. Panggilan berdasarkan referensi lebih hemat memori daripada panggilan berdasarkan nilai, tetapi dapat menyebabkan efek samping yang tidak diinginkan jika tidak dikelola dengan hati-hati.

Panggilan dengan Referensi vs Panggilan dengan Nilai

Cuka putih, yang digunakan untuk membersihkan atau memasak, dibuat dengan memfermentasi alkohol sulingan, menghasilkan cairan bening dan berasa tajam. Cuka sari apel dibuat dengan memfermentasi gula dari apel, dan memiliki rasa yang lebih lembut, sedikit manis, digunakan dalam saus salad dan bumbu perendam.

Panggilan dengan Referensi vs Panggilan dengan Nilai

Metode panggilan dengan referensi digunakan untuk mengakses argumen aktual yang merupakan pemanggilan fungsi. Ini berarti bahwa perubahan dibuat dalam parameter hanya setelah argumen diteruskan.

Ini menggunakan alokasi memori yang sama yang digunakan dalam parameter aktual. Saat memanggil fungsi, alih-alih menyalin variabel, alamat itu sendiri digunakan dalam panggilan dengan referensi.

Call by value adalah subrutin yang meneruskan data aktual dari parameter yang digunakan dalam subrutin.

Dalam metode ini, saat Anda memanggil suatu fungsi, Anda meneruskan nilai ke variabel argumen dalam fungsi yang dipanggil sehingga fungsi yang dipanggil bekerja pada nilainya. Perubahan ini tidak akan tercermin dalam fungsi yang dipanggil.

Tabel perbandingan

Parameter PerbandinganPanggilan dengan ReferensiPanggilan berdasarkan Nilai
VariabelVariabel dilewatkan.Salinan variabel dilewatkan.
Nilai variabelPerubahan yang dilakukan akan mempengaruhi fungsi luar.Perubahan yang dilakukan tidak akan mempengaruhi fungsi luar.
Nilai asliItu dimodifikasi.Itu tidak dimodifikasi.
Safety/keselamatanArgumen yang sebenarnya tidak aman.Argumen yang sebenarnya aman.
DefinisiItu menggunakan variabel itu sendiri untuk lewat.Itu menggunakan salinan variabel untuk lewat.

Apa itu Panggilan dengan Referensi?

Ini adalah metode yang digunakan untuk meneruskan argumen ke suatu fungsi. Untuk menyimpan alamat variabel, digunakan variabel pointer. Dalam metode ini, argumen sebenarnya tidak aman.

Baca Juga:  Blender vs Maya: Perbedaan dan Perbandingan

Modifikasi yang tidak disengaja dapat dilakukan. Penting untuk menangani operasi argumen dengan hati-hati. Ini membantu untuk menghindari perubahan yang dilakukan secara tidak sengaja.

Itu tidak akan membuat data duplikat karena hanya menyimpan satu nilai sehingga bisa menyimpan ruang memori. Jika seseorang membaca kode tersebut, mereka tidak akan dapat menemukan apakah nilai yang diubah dalam kode ini tidak.

Dalam metode ini, jaminan seumur hidup adalah masalah besar. Ini akan menjadi bahaya jika Anda bekerja dengan program multi-utas dan lambda. Untuk mendeklarasikan panggilan dengan referensi, Anda harus memberikan alamat.

Sebut dengan referensi ketika datang ke pemrograman C. Itu langsung mengakses item data dan melakukan fungsi pada mereka. Tetapi Anda harus berhati-hati karena pointer terlibat di dalamnya.

Jika Anda mengetahui status tertentu dari item data, maka panggil dengan metode referensi id sempurna. Memodifikasi salinan data tidak akan menghasilkan sesuatu yang berguna

Call by reference memiliki bahaya yang call by value tidak. Anda dapat secara tidak sengaja menetapkan ulang nilai ke penunjuk dan kehilangannya di memori.

Apa itu Panggilan berdasarkan Nilai?

Dalam metode ini, perubahan yang dilakukan di dalam fungsi parameter tidak akan berpengaruh pada argumen. Program swap bertindak sebagai contoh terbaik dari program panggilan berdasarkan nilai.

Ini menjelaskan bahwa tidak ada perubahan yang dilakukan pada nilai meskipun diubah di dalam fungsi. Di dalam Jawa, metode panggilan dengan nilai berarti memanggil metode dengan parameternya sebagai nilai.

Dalam metode ini, parameter disimpan di lokasi memori yang berbeda. Jika Anda membuat perubahan apa pun di dalam lokasi, parameter sebenarnya dari pemanggil tidak akan terpengaruh.

Metode ini paling baik karena nilai aslinya tidak diubah. Tetapi Anda tidak dapat membuat perubahan apa pun pada variabel aktual. Argumen aktual akan aman dalam metode ini karena Anda tidak dapat membuat perubahan apa pun secara tidak sengaja. 

Baca Juga:  Shortpixel vs Kraken: Perbedaan dan Perbandingan

Metode ini mempertahankan data karena tidak mengubah variabel asli. Di sini argumen adalah variabel. Mengubah variabel dalam badan fungsi tidak langsung. Ekspresi kompleks terkadang dapat berfungsi sebagai argumen.

Ini tidak hemat memori karena dua salinan dibuat untuk variabel yang sama. Jika ukuran datanya besar, metode call-by-value tidak akan mengatasinya. Dalam hal ini, pemrogram harus melakukan panggilan dengan metode referensi. 

Perbedaan Utama Antara Panggilan berdasarkan Referensi dan Panggilan berdasarkan Nilai

  1. Nilai asli diubah dalam panggilan dengan referensi. Di sisi lain, dalam pemanggilan berdasarkan nilai, nilai asli tidak diubah.
  2. Panggilan dengan referensi didukung oleh bahasa pemrograman, tetapi tidak default. Di sisi lain, call by value bekerja secara default dalam bahasa pemrograman.
  3. Dalam Call by reference, setiap perubahan yang dilakukan pada variabel juga akan mempengaruhi variabel di luar fungsi. Sebaliknya, dalam pemanggilan dengan nilai, setiap perubahan yang dilakukan pada variabel tidak akan mempengaruhi variabel di luar fungsi.
  4. Panggilan dengan referensi memungkinkan Anda untuk membuat perubahan pada nilai variabel. Di sisi lain, call-by-value tidak memungkinkan Anda untuk melakukan perubahan.
  5. Dalam panggilan dengan referensi, alamat nilai akan diteruskan. Namun dalam panggilan dengan referensi, salinan nilai akan diteruskan. 
Referensi
  1. https://www.jstor.org/stable/3857812
  2. ftp://prog.vub.ac.be/education/EMOOSE/ReuseSlides/merge-papers/Jackson&al1994-semanticDiff.pdf

Terakhir Diperbarui : 22 Juli 2023

dot 1
Satu permintaan?

Saya telah berusaha keras menulis posting blog ini untuk memberikan nilai kepada Anda. Ini akan sangat membantu saya, jika Anda mempertimbangkan untuk membagikannya di media sosial atau dengan teman/keluarga Anda. BERBAGI ADALAH ️

Tinggalkan Komentar

Ingin menyimpan artikel ini untuk nanti? Klik hati di pojok kanan bawah untuk menyimpan ke kotak artikel Anda sendiri!