Kamis, 19 Agustus 2010

Variabel Pointer


Sebelum membuat linked list dalam bahasa C atau C++, anda harus memahami konsep pointer. Apakah itu pointer? Pointer adalah suatu variabel yang berisi alamat memory dari variabel lain. Konsep pointer secara sempurna didukung oleh bahasa pemrograman C/C++.

Perhatikan gambar di atas, ketika ketika berbicara variabel maka ada 3 hal yang perlu anda pahami:


  1. Nama variabel : Pada contoh di atas, beridentitas x yang bertipe integer (lihat baris ke-5 kode program). Tipe integer memerlukan ruangan di memory sebesar 4 byte. Variable x ini diibaratkan sebagai sebuah rumah dengan ukuran tipe tertentu
  2. Data : Variabel x diisi  data bernilai 50. Data diibaratkan penghuni rumah.
  3. Alamat : Posisi data pada memory RAM di komputer anda yang pada gambar di atas beralamat di 8012, diibaratkan rumah, pasti sebuah rumah mempunyai identitas seperti alamat, lengkap, kode post berserta kota-nya.
Untuk menyimpan sebuah alamat memory dari variable, anda harus mendeklarasikan variabel pointer dengan menambahkan tanda asterik (*) sebelum nama variabel. Untuk lebih jelasnya, perhatikan gambar di atas dan kode program di bawah ini yang keduanya saling berkorelasi.
  • baris ke-5, x dideklarasikan bertipe integer, sekaligus diisi nilainya 50
  • baris ke-6, untuk mencetak x, ketikan x.
  • baris ke-7, untuk mengetahui lokasi alamat x di memory, ketikan &x (tanda & sebelum variabel)
  • baris ke-9, y dideklarasikan bertipe pointer yang menyimpan alamat memory dari variabel bertipe integer.
  • baris ke-9, y = &x adalah perintah untuk menyimpan lokasi alamat memory x di variable pointer y.
  • baris ke-9, *y = 200. Data  pada alamat memory yang ditunjuk  pointer y, nilainya diganti 200. Makin bingung kan? Maksudnya y tadikan menunjuk alamat memory variabel x. Nah variable x itu nilainya bisa diganti dengan menggunakan mengisi *y dengan nilai yg dikehendaki. Inilah hal unik, spesial sekaligus membingungkan dalam pemrograman pointer sehingga banyak bahasa pemrograman lainnya menghilangkan fitur ini. 
  • baris ke-13, saat nilai x dicetak ulang, dan nilai berubah = 200,. Hal ini karena data pada var x bisa juga diganti langsung tidak menggunakan var x, tetapi menggunakan var pointer  *y.
  • baris ke-14, nilai y = alamat x. (perhatikan hasil running 0 x 22FF8C)
  • baris ke-15, sedangkan y sendiri juga mempunyai alamat. (perhatikan hasil running pada gambar paling bawah).
 

Hasil running dari kode program di atas adalah sebagai berikut:

Tidak ada komentar:

Posting Komentar