Lompati ke konten utama
Modul 3 · Pelajaran 2 dari 28/18 dalam kursus~12 min
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:

C++
#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:

C++
#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

Latihan#cpp.m3.l2.e1
Upaya: 0Memuat…

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.

Memuat editor…
Tunjukkan petunjuk

Tanda tangan fungsi menggunakan `&`karakter setelah tipe untuk menunjukkan referensi:`void doubleNumber(int& n)`.

Solusi tersedia setelah 3 upaya

Latihan#cpp.m3.l2.e2
Upaya: 0Memuat…

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.

Memuat editor…
Tunjukkan petunjuk

Gunakan `int suhu = a; a = b; b = temp;` untuk menukar nilai.

Solusi tersedia setelah 3 upaya