C++ | #27 Pointer dan Fungsi



 Halo teman-teman, kali ini kita akan membahas bagaimana pointer digunakan dalam fungsi. Pointer sering dipakai ketika kita ingin mengirim data ke fungsi dan bisa mengubah nilai asli dari variabel di luar fungsi tersebut.


Mengingat Kembali: Passing by Value vs Passing by Reference

  • Passing by Value: ketika kita mengirim variabel ke fungsi, yang dikirim adalah salinannya. Nilai asli tidak berubah.

  • Passing by Reference: ketika kita mengirim alamat variabel (menggunakan pointer atau reference), fungsi bisa mengubah nilai asli dari variabel tersebut.


Passing by Value (Tidak Mengubah Asli)

Contoh:

#include <iostream> using namespace std; void ubahNilai(int x) { x = 100; } int main() { int a = 10; ubahNilai(a); cout << "Nilai a setelah fungsi: " << a << endl; return 0; }

Output:

Nilai a setelah fungsi: 10

👉 Nilai a tetap 10 karena yang dikirim hanya salinan.


Passing by Pointer (Mengubah Nilai Asli)

Sekarang kita pakai pointer untuk mengirim alamat variabel:

#include <iostream> using namespace std; void ubahNilai(int* x) { *x = 100; // ubah nilai pada alamat yang ditunjuk } int main() { int a = 10; ubahNilai(&a); cout << "Nilai a setelah fungsi: " << a << endl; return 0; }

Output:

Nilai a setelah fungsi: 100

👉 Nilai a berhasil berubah karena fungsi menerima alamatnya, bukan salinan.


Fungsi dengan Beberapa Pointer

Kita bisa mengirim lebih dari satu pointer, contohnya fungsi yang menukar dua nilai (swap function).

#include <iostream> using namespace std; void tukar(int* x, int* y) { int temp = *x; *x = *y; *y = temp; } int main() { int a = 5, b = 10; tukar(&a, &b); cout << "a = " << a << endl; cout << "b = " << b << endl; return 0; }

Output:

a = 10 b = 5

👉 Fungsi bisa langsung memanipulasi nilai asli dari variabel.


Pointer ke Array dalam Fungsi

Array sebenarnya otomatis dikirim sebagai pointer jika dipassing ke fungsi.

#include <iostream> using namespace std; void cetakArray(int* arr, int n) { for (int i = 0; i < n; i++) { cout << arr[i] << " "; } cout << endl; } int main() { int angka[5] = {1, 2, 3, 4, 5}; cetakArray(angka, 5); return 0; }

Output:

1 2 3 4 5

👉 Nama array otomatis dianggap pointer, jadi bisa dipassing langsung ke fungsi.


Kesimpulan

  • Pointer memungkinkan kita mengubah nilai asli variabel di luar fungsi.

  • Passing by pointer berguna untuk operasi seperti swap, ubah nilai, atau olah array.

  • Array yang dikirim ke fungsi otomatis diperlakukan sebagai pointer.


Selanjutnya, kita akan masuk ke topik yang lebih lanjut lagi, yaitu Pointer ke Pointer (Double Pointer).

Posting Komentar

0 Komentar