Pelajaran modul (2/2)
Lewati nilai dan referensi
Di C++, saat Anda meneruskan argumen ke suatu fungsi, ada dua cara utama untuk melakukannya: berdasarkan nilai atau berdasarkan referensi.
Memahami perbedaan ini adalah kunci kebenaran program dan optimalisasi kinerja.
Lewati Nilai (Salinan)
Secara default, C++ meneruskan argumen berdasarkan nilai. Ini berarti salinan data dibuat di memori. Modifikasi apa pun yang dilakukan di dalam fungsi tidak akan mempengaruhi variabel asli di luar:
#include <iostream>
void increment(int n) {
n++; // Modifies only the local copy
}
int main() {
int x = 5;
increment(x);
std::cout << x << std::endl; // Prints 5, x remains unchanged!
return 0;
}Lewati Referensi (&)
Jika Anda ingin fungsinya dapat mengubah variabel asli, atau jika Anda ingin menghindari penyalinan objek besar (seperti string panjang atau vektor), Anda harus menggunakan pass by reference.
Referensi dideklarasikan dengan menambahkan simbol & setelah tipe parameter:
#include <iostream>
void incrementRef(int& n) {
n++; // Modifies the original variable directly
}
int main() {
int x = 5;
incrementRef(x);
std::cout << x << std::endl; // Prints 6!
return 0;
}Parameter int& n bukanlah salinan, melainkan alias (referensi langsung) ke variabel x yang diteruskan saat memanggil fungsi.
Cobalah sendiri
Definisikan fungsi bernama doubleNumber dengan tipe pengembalian void yang mengambil referensi ke bilangan bulat n (menggunakan int& n) dan menggandakan nilainya (n = n * 2). Sebut saja main dengan meneruskan variabel val yang diinisialisasi ke 10, lalu cetak val.
Tunjukkan petunjuk
Tanda tangan fungsi menggunakan `&`karakter setelah tipe untuk menunjukkan referensi:`void doubleNumber(int& n)`.
Solusi tersedia setelah 3 upaya
Definisikan fungsi bernama swap yang mengambil dua referensi bilangan bulat a dan b (int& a, int& b) dan menukar nilainya menggunakan variabel sementara temp. Sebut saja main untuk menukar x dan y, lalu mencetaknya.
Tunjukkan petunjuk
Gunakan `int suhu = a; a = b; b = temp;` untuk menukar nilai.
Solusi tersedia setelah 3 upaya