Mengenal Pointers, Reference Operator (&) dan Dereference Operator (*) – Kita lupakan sejenak Class, kita akan terlebih dahulu mengenal Pointers, Reference Operator (&) dan Dereference Operator (*)
Tahukah anda bahwa setiap variable yang kita buat akan tersimpan di dalam memory cell komputer?
Tahukah anda bahwa memory komputer kita terdiri dari memory cell – memory cell dengan ukuran terkecil adalah 1 byte?
Tahukah anda bahwa memory cell – memory cell ini terpetakan pada komputer dengan nomor unik yang disebut dengan nomor address?
Tidak percaya? Cobalah ketikan kode di bawah ini kemudian run, lihat, dengan menggunakan reference operator (&) kita bisa mengetahui pada address keberapa variable kita tersimpan di memory 🙂
Pointer, sesuai dengan namanya, fungsinya adalah untuk penunjuk, entah itu penunjuk ke variable, penunjuk ke fungsi, atau penunjuk ke object/class.
Di dalam pointer, kita akan mengenal sebuah reference operator dengan tanda ‘&’ yang memiliki arti ‘address of’.
Kita juga akan mengenal sebuah dereference operator dengan tanda ‘*’ yang mempunyai arti ‘value pointed by’. Kalo di indonesiakan adalah ‘nilai yang direferensikan oleh..’.
Reference operator (&) dan Dereference operator (*) merupakan saling berkebalikan.
‘Address of’ disini maksudnya adalah address dari variable/fungsi tersebut di dalam memory cell. Perhatikan kode di atas, &panjang akan menampilkan address dari variable panjang pada memory cell. Nilai yang akan ditampilan beragam, bisa 001284, bisa 002355, bisa 123456, ini adalah address/alamat angka dari variable yang tersimpan pada memory cell.
‘Value pointed by’ disini maksudnya adalah nilai dari variable yang direferensikan. Coba perhatikan contoh berikut ini:
Gambar 1:
Lihat kode di atas, kita membuat variable dengan type int yaitu variable panjang dan variable lebar. Kemudian kita membuat sebuah pointer variable dengan dereference operator , yaitu pointer variable *a. ingat, ini adalah pointer variable. Bacanya adalah ‘value pointed by a’.
Nah, sekarang perhatikan variable a (bukan pointer variable a), kita memberikan nilai dari variable a adalah ‘address of panjang’ yaitu pada kode a = &panjang;
Lalu bila a = &panjang; maka berapakah nilah *a?
Bisa dipastikan a akan berisi memory address dari panjang, dan *a akan berisi nilai dari panjang yaitu 100;
Coba lihat hasil dari kode di atas:
Gambar 2:
Bisa dibilang, * dan & saling berkebalikan. Masih bingung juga? Perhatikan dan bacalah kode berikut ini:
Gambar 3:
Nilai dari a dan *a adalah berbeda, hasilnya adalah seperti berikut ini:
Gambar 4:
Mudah bukan, ingat, ini adalah tutorial singkat tentang pointer. Di atas adalah tutorial pointer to variables. Di internet, banyak sekali tutorial tingkat lanjut tentang pointer ini salah satunya adalah pointer to functions. Silahkan anda dapat mencarinya di google 🙂
Sekian semoga bermanfaat.