C++ | #28 Pointer ke Pointer


 

Setelah kita memahami pointer dasar, sekarang kita akan membahas sesuatu yang sedikit lebih dalam, yaitu pointer ke pointer.

Pointer ke pointer artinya sebuah pointer yang menyimpan alamat dari pointer lain. Dengan kata lain, kita punya tingkatan ganda dalam pengaksesan alamat. Konsep ini biasanya disebut juga double pointer.


Dasar Pointer ke Pointer

Kalau pointer biasa menyimpan alamat dari sebuah variabel, maka pointer ke pointer menyimpan alamat dari pointer.

Contoh sederhana:

#include <iostream> using namespace std; int main() { int a = 10; int* p = &a; // pointer ke a int** pp = &p; // pointer ke pointer p cout << "Nilai a: " << a << endl; cout << "Alamat a: " << &a << endl; cout << "Nilai p (alamat a): " << p << endl; cout << "Nilai *p (isi a): " << *p << endl; cout << "Nilai pp (alamat p): " << pp << endl; cout << "Nilai *pp (isi p / alamat a): " << *pp << endl; cout << "Nilai **pp (isi a): " << **pp << endl; return 0; }

Output kira-kira:

Nilai a: 10 Alamat a: 0x61ff0c Nilai p (alamat a): 0x61ff0c Nilai *p (isi a): 10 Nilai pp (alamat p): 0x61ff08 Nilai *pp (isi p / alamat a): 0x61ff0c Nilai **pp (isi a): 10

👉 Dari sini terlihat:

  • p menunjuk ke a.

  • pp menunjuk ke p.

  • *pp sama dengan p.

  • **pp sama dengan nilai asli a.


Mengubah Nilai dengan Double Pointer

Dengan pointer ke pointer, kita bisa mengakses variabel asli melalui dua kali dereference (**).

#include <iostream> using namespace std; int main() { int a = 5; int* p = &a; int** pp = &p; cout << "Sebelum: " << a << endl; **pp = 20; // ubah nilai a melalui double pointer cout << "Sesudah: " << a << endl; return 0; }

Output:

Sebelum: 5 Sesudah: 20

Double Pointer dalam Fungsi

Pointer ke pointer sering dipakai dalam fungsi, terutama ketika kita ingin mengubah alamat pointer itu sendiri.

Contoh: fungsi yang membuat pointer menunjuk ke variabel baru.

#include <iostream> using namespace std; void ubahPointer(int** pp, int* baru) { *pp = baru; // ubah alamat yang disimpan pointer } int main() { int a = 10, b = 50; int* p = &a; cout << "Sebelum: " << *p << endl; ubahPointer(&p, &b); // kirim alamat pointer p cout << "Sesudah: " << *p << endl; return 0; }

Output:

Sebelum: 10 Sesudah: 50

👉 Di sini, pointer p yang awalnya menunjuk ke a, berhasil diubah untuk menunjuk ke b dengan bantuan double pointer.


Kapan Double Pointer Dipakai?

  • Untuk mengubah alamat pointer dari dalam fungsi.

  • Saat bekerja dengan array 2 dimensi yang dialokasikan secara dinamis.

  • Dalam pemrograman tingkat lanjut (contoh: manipulasi struktur data seperti linked list, tree, graph).


Kesimpulan

  • Pointer ke pointer adalah pointer yang menyimpan alamat pointer lain.

  • Akses nilai dengan **pp.

  • Berguna ketika ingin mengubah alamat pointer atau bekerja dengan struktur data kompleks.

Posting Komentar

0 Komentar