Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat me¬mo¬ri dari suatu variabel lain. Alamat ini merupakan lokasi dari obyek lain (bia¬sanya variabel lain) di dalam memori. Contoh, jika sebuah variabel berisi alamat da¬ri variabel lain, variabel pertama dikatakan menunjuk ke variabel kedua. Ada 2 operator pointer yang dikenal secara luas, yaitu operator & dan operator *.
Operator &
Operator & merupakan operator alamat. Pada saat pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya pada memory, hal ini akan dilakukan secara otomatis oleh kompiler dan operating sysem pada saat run-time. Jika ingin mengetahui dimana suatu variable akan disimpan, dapat dilakukan dengan memberikan tanda ampersand (&) didepan variable , yang berarti "address of". Contoh : ted = &andy;Penulisan tersebut berarti akan memberikan variable ted alamat dari variable andy. Karena variabel andy diberi awalan karakter ampersand (&), maka yang menjadi pokok disini adalah alamat dalam memory, bukan isi variable. Misalkan andy diletakkan pada alamat 1776 kemudian dituliskan instruksi sbb : andy = 25;
fred = andy;
ted = &andy;
Operator *
Operator * merupakan operator reference. Dengan menggunakan po¬inter, kita dapat mengakses nilai yang tersimpan secara langsung dengan mem¬berikan awalan operator asterisk (*) pada identifier pointer, yang ber¬arti "value pointed by". Contoh :
beth = *ted; (dapat dikatakan:"beth sama dengan nilai yang ditunjuk oleh ted")
beth = 25, karena ted dialamat 1776, dan nilai yang berada pada alamat 1776 adalah 25. Ekspresi dibawah ini semuanya benar, perhatikan :
andy = 25;
&andy = 1776;
ted = 1776;
*ted = 25;
Ekspresi pertama merupakan assignation bahwa andy = 25;. Ke¬dua, meng¬¬gunakan operator alamat (address/derefence operator (&)), se¬hing¬ga akan meng¬embalikan alamat dari variabel andy. Ketiga bernilai be¬nar karena as¬signation untuk ted adalah ted = &andy;. Keempat meng¬gu¬nakan reference ope¬ra¬tor (*) yang berarti nilai yang ada pada alamat yang di¬¬tunjuk oleh ted, yaitu 25. Maka ekspresi dibawah ini pun akan bernilai be¬nar :
Ekspresi pertama merupakan assignation bahwa andy = 25;. Ke¬dua, meng¬¬gunakan operator alamat (address/derefence operator (&)), se¬hing¬ga akan meng¬embalikan alamat dari variabel andy. Ketiga bernilai be¬nar karena as¬signation untuk ted adalah ted = &andy;. Keempat meng¬gu¬nakan reference ope¬ra¬tor (*) yang berarti nilai yang ada pada alamat yang di¬¬tunjuk oleh ted, yaitu 25. Maka ekspresi dibawah ini pun akan bernilai be¬nar :
*ted = andy;
Deklarasi Pointer
Seperti halnya variabel lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum digunakan. Bentuk umum deklarasi pointer adalah :Dimana Tipe_data merupakan tipe dari data yang ditunjuk, bukan tipe dari pointer-nya. Contoh :
1. Mensubstitusikan address sebuah variabel ke pointer dengan memakai address operator & int x; int *ptr; ptr = &x;
2. Mensubstitusikan address awal sebuah array ke pointer char t[5]; char *ptr; ptr = t;
3. Mensubstitusikan address salah satu elemen array dengan address operator char t[5] ; char *ptr; ptr = &t[3];
4. Mensubstitusikan address awal character string ke pointer char char *ptr; ptr = ”jakarta”
5. Mensubstitusikan NULL pada pointer. NULL ada pointer kosong, menunjukkan suatu status dimana pointer itu belum diinisialisasikan dengan sebuah address tertentu.
6. Memakai fungsi MALLOC.
0 komentar:
Posting Komentar