Menu
CoddyTech

Pointer sebagai Parameter

Pelajaran 7 dari 14 dalam kursus Pointer C++ di Coddy.

Penggunaan fungsi dalam pemrograman sangat umum. Kita menggunakannya sebagai alat untuk menyelesaikan tugas berulang kali, atau setidaknya untuk menata dan memisahkan kode kita. 

Saat kita meneruskan nilai ke fungsi, nilai yang kita gunakan di dalam fungsi adalah salinan dari nilai aslinya. Di sinilah meneruskan nilai sebagai pointer ke fungsi menjadi berguna.

void swap(int x, int y) {
    int temp = x;
    x = y;
    y = temp;
    cout << x << " " << y << endl;
}

int main() {
    int a = 10, b = 20;
    cout << a << " " << b << endl;
    swap(a, b);
    cout << a << " " << b;
}
Output:
10 20
20 10
10 20

Seperti yang kamu lihat, awalnya nilainya normal. Saat kita meneruskannya ke fungsi, salinan dari nilai aslinya dibuat. Salinan tersebut ditukar, lalu kita mencetak nilai yang sudah ditukar. Terakhir, kita bisa melihat bahwa setelah pemanggilan fungsi di fungsi main, hasilnya tidak permanen dan nilainya kembali normal. Masalah ini dapat diatasi dengan menggunakan pointer.

void swap(int *x, int *y) {
    int temp = *x;
    *x = *y;
    *y = temp;
    cout << *x << " " << *y << endl;
}

int main() {
    int a = 10, b = 20;
    cout << a << " " << b << endl;
    swap(&a, &b);
    cout << a << " " << b;
}
Output:
10 20
20 10
20 10

Masalahnya sudah teratasi. Sekarang, alih-alih meneruskan nilai, kita meneruskan alamat tempat nilai tersebut berada. Sebagai argumen, fungsi menerima pointer yang menyimpan alamat tersebut. Kita membuat integer temp, yang mengambil nilai hasil dereferensi dari x. Nilai pada alamat x (yang alamatnya sama dengan a di fungsi main()) diubah menjadi nilai y (nilai awal dari alamat b), lalu terakhir y yang didereferensi mengambil nilai temp. Karena kita mengubah nilai pada alamat yang diberikan, bukan nilai yang diberikan, perubahan tersebut bersifat permanen.

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

challenge icon

Tantangan

Mudah

Selesaikan fungsi Calculator yang mengubah nilai variabel large dan small secara permanen. Kurangi large sebesar selisih antara large dan small, sedangkan small harus dikalikan dengan dirinya sendiri.

input
5 3

output
5 3
3 9

Penjelasan
Mengurangi 5 sebesar selisih antara 5 dan 3, yaitu 2, menghasilkan 5 - 2 = 3, sedangkan mengalikan 3 dengan dirinya sendiri menghasilkan 9

Catatan: JANGAN menulis fungsi main()

Coba sendiri

#include <iostream>

using namespace std;

void Calculator(// Terima argumen: large & small) {
    // Tulis kode untuk perhitungan
}


// JANGAN tulis fungsi main()

Semua pelajaran di Pointer C++

Latihan sendiri: Compiler C++ online