Pointer in C/C++ Programming

Fitur paling penting dalam bahasa pemrograman C yakni pointer. Kemampuan bahasa C yang memampukan program untuk mensimulasikan struktur data dinamis, yaitu struktur data yang dapat mengembang dan menyusut pada saat eksekusi, seperti linked list, queue, stack, dan tree. Pointer adalah variabel yang memiliki nilai berupa alamat memori.

Jika suatu variabel memuat nilai tertentu, maka pointer memuat alamat suatu variabel. Jadi nama variabel secara langsung mereferensi suatu nilai, sedangkan pointer secara tidak langsung mereferensi suatu nilai.

Sama halnya dengan variabel, pointer harus didefinisikan sebelum digunakan. Definisi menspesifikasi bahwa variabel jumlahPtr bertipe int * (pointer yang menunjuk ke suatu integer) sehingga statemen berikut memberitahukan kepada kita bahwa jumlahPtr adalah sebuah pointer yang menunjuk ke suatu variabel yang bertipe int

int *jumlahPtr, jumlah;

Simbol * untuk menunjukkan bahwa jumlahPtr adalah pointer. Pointer harus diinisialisasi ketika didefinisikan atau di dalam suatu statemen penugasan. Pointer bisa diinisialisasi dengan NULL, 0, atau sebuah alamat.

Inisialisasi dengan nilai NULL yang berarti tidak menunjuk apapun. NULL adalah sebuah konstanta simbolik yang didefinisikan di dalam header <stddef.h>

Inisialisasi dengan nilai 0 yang berarti inisialisasi pointer dengan tipe yang sesuai. Nilai 0 merupakan satu-satunya integer yang bisa ditugaskan secara langsung kepada variabel pointer.

Inisialisasi dengan alamat yang berarti pointer menunjuk pada alamat operand yang merupakan nilai balik dari operator &.

int nilai = 10;
int *nilaiPtr;
nilaiPtr = &nilai;

Statemen di atas menugaskan alamat dari variabel nilai kepada variabel pointer nilaiPtr. Variabel nilaiPtr kemudian dapat dikatakan "menunjuk ke nilai". Operand dari operator alamat (&) harus berupa sebuah variabel. Operator alamat tidak dapat diterapkan pada konstanta, pada ekspresi, atau pada variabel yang dideklarasikan dengan register.