Senin, 12 Mei 2014

Pointer adalah Operand valid di dalam aritmatika ekspresi, tugas ekspresi dan perbandingan ekspresi. Namun, tidak semua operator yang biasanya digunakan dalam ungkapan-ungkapan ini yang berlaku dalam kaitannya dengan pointer variabel.
Pointer mungkin incremented (++) atau decremented (-), yang berarti integer dapat ditambahkan ke pointer (+ atau + =), integer dapat dikurangi dari pointer (- atau-=) dan satu pointer dapat dikurangi dari yang lain.
Sebagai contoh, seandainya telah ditetapkan array int v[5] dan elemen pertama di lokasi dalam memori adalah 3000 maka pointer vPtr menganggap telah diinisialisasi untuk menunjuk ke v[0], sehingga nilai vPtr adalah 3000. Variabel vPtr dapat diinisialisasi untuk menunjuk ke array v dengan salah satu pernyataan.
vPtr = v;
vPtr = &v[ 0 ];
Di konvensional aritmatika, 3000 + 2 menghasilkan nilai 3002. Hal ini biasanya tidak terjadi dengan pointer aritmatika. Ketika integer ditambahkan atau dikurangkan dari pointer, pointer bukanlah incremented atau decremented. Misalnya, pernyataan vPtr += 2; akan menghasilkan 3008 (3000 + 2 * 4), dengan asumsi bilangan bulat disimpan dalam 4 byte dari memori. Dalam array v, vPtr sekarang akan menunjukkan v[2]. Jika bilangan bulat disimpan dalam byte 2 memori, kemudian perhitungan sebelumnya akan mengakibatkan lokasi memori 3004 (3000 + 2 * 2). Jika array tipe data yang berbeda, pernyataan sebelumnya akan kenaikan pointer oleh dua kali jumlah byte yang dibutuhkan untuk menyimpan objek dari jenis data. Ketika melakukan aritmatika pointer pada karakter array, hasilnya akan konsisten dengan aritmatika biasa.
Jika vPtr telah bertambah dengan 3016 yang menunjuk ke v [4], pernyataan  vPtr -= 4; akan mengatur vPtr kembali ke 3000-awal array. Jika sebuah pointer menjadi incremented atau decremented oleh salah satu, kenaikan (++) dan penurunan (-) maka operator dapat digunakan. Pernyataan
++vPtr;
vPtr++;
akan menambahkan pointer ke lokasi berikutnya dalam array. Lain halnya dengan salah satu pernyataan
--vPtr;
vPtr--;
yaitu akan mengurangkan pointer ke unsur sebelumnya dalam array.
Pointer dapat ditugaskan ke pointer lain jika keduanya memiliki tipe yang sama. Pengecualian aturan ini adalah untuk pointer void, yang merupakan pointer generik yang dapat mewakili jenis pointer. Semua jenis pointer dapat diberikan ke pointer void, dan pointer void dapat memberikan kepada pointer dari jenis apa pun.

Pointer dapat dibandingkan dengan menggunakan kesetaraan dan relasional operator, tetapi perbandingan ada artinya kecuali pointer menunjuk ke elemen array yang sama. Penggunaan perbandingan pointer adalah untuk menentukan apakah pointer adalah NULL.

0 komentar:

Posting Komentar