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