Pemrograman pointer OPERASI FILE

434 Direktorat Pembinaan SMK | 2008 huruf angka amount 1200 1201 1203 Gambar 13.1. Ilustrasi Pengaturan Data Pada Sebuah Memori Pada gambar diatas variable letter diletakan pada alamat 1200, number pada alamat 1201 dan amount pada alamat 1203. Ketika programmer mendeklarasikan sebuah variable, sama halnya dengan menginformasikan compiler dua sesuatu yaitu : nama variable dan tipe variable. Misalnya kita akan mendeklarasikan tipe variable integer dengan nama variable k sehingga dapat ditulis: Int k Pada tipe variable integer merupakan tipe data yang digunakan compiler dimana memori yang terpakai adalah dua byte. Setiap kali komputer menyimpan data, maka sistem operasi akan mengorganisasikan lokasi pada memori pada alamat yang unik. Misal untuk alamat memori 1776, hanya sebuah lokasi yang memiliki alamat tersebut. Dan alamat 1776 pasti terletak antara 1775 dan 1777. Dalam pointer, terdapat 2 jenis operator yang biasa digunakan. Kegunaan pointer yang utama adalah untuk menyimpan alamat memori dari sebuah variabel data type atau object dari class. Selain menyimpan alamat dari variabel, pointer juga dapat digunakan untuk menyimpan alamat dari sebuah fungsi function pointer. Function pointer telah digunakan sejak dikenalkannya bahasa C, dan banyak digunakan untuk sebuah fungsi callback atau untuk meningkatkan readability dari sebuah code Anda dapat memperlakukan function pointer seperti pointer biasa pointer ke datatypeobject, anda dapat menyimpan,mengirimkan, merubah address, atau meng- evaluasi address dari pointer ke fungsi ini dengan sifat tambahan anda dapat memanggil fungsi yang ditunjuk oleh function pointer. Setiap variabel yang dideklarasikan, disimpan dalam sebuah lokasi memori dan pengguna biasanya tidak mengetahui di alamat mana data tersebut disimpan. Dalam C++, untuk mengetahui alamat tempat penyimpanan data, dapat 2008 | Direktorat Pembinaan SMK 435 digunakan tanda ampersand yang dapat diartikan “alamat”. Sebenarnya jika programer akan mendeklarasian sebuah variable, seorang programer tidak diharuskan menentukan lokasi sesungguhnya pada memory, karena 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. Perhatikan contoh dibawah ini: ted = andy; Akan memberikan variable ted alamat dari variable andy, karena variable 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 sebagai berikut : andy = 25; fred = andy; ted = andy; Maka hasilnya adalah sebagai berikut: andy 25 1775 1776 1777 Fred Ted 25 1776 Gambar 13.2. Operator Alamat Dengan menggunakan pointer, kita dapat mengakses nilai yang tersimpan secara langsung dengan memberikan awalan operator asterisk pada identifier pointer, yang berarti 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. 436 Direktorat Pembinaan SMK | 2008 Ted 1776 1775 1776 1777 25 memori 25 beth Gambar 13.3. Operator Reference Ekspresi dibawah ini semuanya benar, perhatikan pernyataan program dibawah: andy == 25 andy == 1776 ted == 1776 ted == 25 Ekspresi pertama merupakan assignation bahwa andy=25;. Kedua, menggunakan operator alamat addressderefence operator , sehingga akan mengembalikan alamat dari variabel andy. Ketiga bernilai benar karena assignation untuk ted adalah ted = andy;. Keempat menggunakan reference operator yang berarti nilai yang ada pada alamat yang ditunjuk oleh ted, yaitu 25. Maka ekspresi dibawah ini pun akan bernilai benar : ted == andy

13.2. Deklarasi variabel bertipe pointer

Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain. Pada kenyataan yang sebenarnya, variabel pointer berisi alamat dari suatu obyek lain yaitu obyek yang dikatakan ditunjuk oleh pointer. Sebagai contoh, px adalah variable pointer dan x adalah variabel yang ditunjuk oleh px. Kalau x berada pada alamat memori alamat awal 1000, maka px akan berisi 1000. Sebagaimana diilustrasikan pada gambar di bawah ini: 2008 | Direktorat Pembinaan SMK 437 Gambar 13.4. Variabel pointer px menunjuk ke variabel x Suatu variabel pointer dideklarasikan dengan bentuk sebagai berikut : Gambar 13.7. deklarasi variabel pointer Dimana type merupakan tipe dari data yang ditunjuk, bukan tipe dari pointer- nya. Dengan tipe dapat berupa sembarang tipe yang sudah dibahas pada bab-bab sebelumnya, maupun bab-bab berikutnya. Adapun nama_var_pointer adalah nama dari variabel pointer. Perhatikan contoh berikut ini: int px; char pch1, pch2; float greatnumber; Contoh pertama menyatakan bahwa px adalah variabel pointer yang menunjuk ke suatu data bertipe int, sedangkan contoh kedua masing pch1 dan pch2 adalah variabel pointer yang menunjuk ke data bertipe char. 1000 ? X px zzzz 1000 Alamat tipe_data nama_var_pointer char, float, int, double, long, operator bintang asterisk