Pointer sering dianggap bagian tersulit C++, padahal konsepnya sederhana: sebuah variabel yang menyimpan alamat memori. Kita mempelajari alamat, dereferencing, reference, dan pointer arithmetic, lalu membandingkan pointer dan reference secara langsung.

# Alamat Memori

Memahami memori sebagai barisan byte, konsep alamat setiap variabel, operator address-of (&), dan cara membaca tampilan alamat dalam heksadesimal.

Buka →
# Pointer

Mendeklarasikan pointer bertipe, mengisinya dengan alamat lewat &, mengganti sasarannya, dan membaca nilai yang ditunjuk lewat dereference.

Buka →
# Dereferencing

Membaca dan menulis nilai melalui pointer dengan operator *, aturan precedence *p + 1 versus *(p+1), serta bahaya dereference pada pointer yang belum diinisialisasi.

Buka →
# nullptr

Null pointer konstanta modern C++: mengapa nullptr lebih aman daripada NULL, cara memeriksa pointer kosong, dan bahaya dereference nullptr.

Buka →
# Pointer dan Array

Hubungan erat array dan pointer: array decay ke pointer elemen pertama, akses elemen lewat notasi indeks maupun dereference, dan konsekuensi saat array dikirim ke fungsi.

Buka →
# Pointer Arithmetic

Menggeser pointer dengan + dan -, menghitung selisih dua pointer, membandingkan pointer dalam array yang sama, serta batas-batas yang bila dilanggar menjadi undefined behavior.

Buka →
# Reference

Reference sebagai alias permanen variabel lain: deklarasi dan inisialisasi wajib, ketiadaan rebind, dan perbandingannya dengan pointer.

Buka →
# Const Pointer dan Pointer to Const

Tiga bentuk kombinasi const dan pointer — pointer to const, const pointer, dan const pointer to const — beserta cara membaca deklarasinya dari kanan ke kiri.

Buka →
# Pointer sebagai Parameter

Mengirim pointer ke fungsi untuk mengubah nilai asli, pola OUT parameter, pemeriksaan null-safe di dalam fungsi, dan perbandingannya dengan parameter reference.

Buka →
# Pointer to Pointer

Deklarasi int** dan dereference bertingkat, kegunaannya untuk mengubah pointer di dalam fungsi dan array of pointers, serta posisinya di kode C++ modern.

Buka →
# void Pointer

void* sebagai pointer generik lintas tipe: mengapa tidak bisa didereference langsung, cara mengembalikannya ke tipe asal, use case API C, dan kapan sebaiknya dihindari.

Buka →
# Dangling Pointer

Pointer yang menunjuk objek yang sudah tidak hidup: penyebab utamanya (variabel lokal yang selesai dan memori yang sudah di-delete) serta mitigasinya dengan nullptr dan smart pointer.

Buka →
# Null dan Invalid Pointer

Peta lengkap pointer bermasalah — null, uninitialized, dangling, dan wild pointer — beserta cara mencegah masing-masing lewat kebiasaan defensif yang bisa dijadikan checklist.

Buka →
# Pointer vs Reference

Perbandingan lengkap pointer dan reference: sintaks, semantik rebind dan alias, nullability, panduan memilih, dan penutup Section Pointer dan Reference.

Buka →