Bagaimana Cara Melewati Argumen ke Fungsi di C++: Berdasarkan Nilai vs. Dengan Referensi?

Bagaimana Cara Melewati Argumen Ke Fungsi Di C Berdasarkan Nilai Vs Dengan Referensi



Bahasa pemrograman apa pun, termasuk C++, harus memiliki kemampuan untuk menyediakan parameter ke fungsi. Oleh nilai dan oleh referensi adalah dua metode utama yang dapat digunakan untuk melewatkan parameter. Kedua pendekatan memiliki kelebihan dan kekurangan, jadi penting bagi pemrogram untuk mengetahui kapan harus menggunakan masing-masing pendekatan.

1: Melewati Argumen berdasarkan Nilai

Salinan variabel dibuat dan diberikan ke fungsi kapan argumen diteruskan oleh nilai . Semua modifikasi yang dilakukan pada variabel di dalam fungsi hanya memengaruhi penyalinan; tidak ada yang diubah ke variabel asli. Sebagai akibat, melewati nilai adalah metode yang aman karena tidak ada kemungkinan mengubah nilai variabel asli secara tidak sengaja.

Melewati nilai , bagaimanapun, mungkin tidak efektif, terutama ketika berhadapan dengan tipe data yang besar atau rumit. Setiap pemanggilan fungsi yang membutuhkan salinan data dapat menghabiskan sumber daya CPU dan memori dengan cepat. Lebih-lebih lagi, melewati nilai tidak dapat digunakan untuk fungsi yang bertujuan mengubah nilai variabel asli karena salinan dan variabel asli tidak terkait.







2: Melewati Argumen dengan Referensi

Variabel bisa dilewati oleh referensi di C++ juga, yang membantu memecahkan masalah ini. Variabel asli dikirim ke fungsi when lewat referensi , dan setiap modifikasi yang dilakukan pada variabel di dalam fungsi juga akan memengaruhi variabel asli. Karena ini, lewat referensi secara substansial lebih efektif untuk tipe data yang besar atau rumit dan menghindari kebutuhan untuk menyalin.



Untuk mencegah modifikasi yang tidak diinginkan, sebuah fungsi harus secara eksplisit ditetapkan sebagai const. Menambahkan kata kunci const ke deklarasi fungsi, seperti pada “int count(const int& a, const int& b),” akan menyelesaikannya.



Namun, melewati argumen dengan referensi membutuhkan perhatian yang cermat terhadap detail juga. Pemrogram yang tidak berpengalaman dapat membuat kesalahan, seperti membuat efek samping yang tidak disengaja, pembagian data yang tidak diinginkan, dan mengesampingkan data eksternal.





Pertimbangkan kode berikut yang menunjukkan keduanya metode penyampaian argumen :

#termasuk

menggunakan namespace std ;

ruang kosong PassByValue ( int X ) {

X = 5 ;

cout << 'Di dalam PassByValue:' << X << endl ;

}

ruang kosong PassByReference ( int & X ) {

X = 5 ;

cout << 'Di dalam PassByReference:' << X << endl ;

}

int utama ( ) {

int angka1 = 2 , angka2 = 2 ;

cout << 'Sebelum pemanggilan fungsi: num1=' << angka1 << 'bil2=' << angka2 << endl ;

PassByValue ( angka1 ) ;

PassByReference ( angka2 ) ;

cout << 'Setelah pemanggilan fungsi: num1=' << angka1 << 'bil2=' << angka2 << endl ;

kembali 0 ;

}

Pada kode di atas, fungsi pertama, PassByValue , menerima argumen bilangan bulat berdasarkan nilai. Di dalam fungsi, variabel bilangan bulat baru dibuat dan diberi nilai 5. Bilangan bulat asli tetap tidak dimodifikasi. Fungsi kedua, PassByReference , menerima argumen bilangan bulat dengan referensi. Dalam hal ini, fungsi secara langsung memanipulasi variabel asli.



Keluaran

Seperti yang diharapkan, panggilan pertama menghasilkan 5, tetapi tidak berpengaruh pada variabel asli. Sebaliknya, pemanggilan kedua mengubah nilai num2 menjadi 5, yang mempengaruhi output dari pernyataan akhir.

Lewati Nilai vs Lewati Referensi

1: Cara Memanggil Fungsi

Satu perbedaan antara melewati nilai Dan lewat referensi adalah bagaimana fungsi dipanggil. Kapan melewati nilai , pemanggilan fungsi harus menyertakan nilai variabel, seperti `menghitung(a, b)`. Kapan lewat referensi , pemanggilan fungsi harus menyertakan alamat memori variabel, yang dilambangkan dengan karakter ampersand, seperti `menghitung(&a, &b)`.

2: Tipe Data

Secara umum, melewati nilai paling tepat saat bekerja dengan tipe data kecil atau sederhana, atau saat fungsi tidak dimaksudkan untuk memodifikasi variabel asli. Melewati referensi lebih cocok untuk tipe data yang besar atau kompleks, atau ketika fungsi dimaksudkan untuk mengubah nilai variabel asli.

Kesimpulan

Ketika parameternya dilewati oleh nilai ke suatu fungsi, salinan variabel dibuat dan disediakan. Oleh lewat referensi , variabel asli dikirim ke fungsi. Di C++, melewati argumen dengan nilai atau dengan referensi merupakan konsep mendasar. Memilih pendekatan yang tepat tergantung pada keadaan khusus dan harus dievaluasi dengan hati-hati. Manfaat menggunakan referensi pendekatan dapat menghasilkan kode yang lebih efektif, meskipun ada godaan untuk menggunakan yang lebih mudah melewati nilai metode.