Wednesday 10 December 2008

Mengenal Pointer di C++

Tipe data pointer merupakan salah satu fitur yang diberikan oleh bahasa C, sebagaimana bahasa Pascal juga mendukungnya. Berbeda dengan jenis tipe data umumnya, tipe data pointer berfungsi untuk menyimpan alamat memori sebuah data melalui variabelnya. Jadi isi sebuah variabel bertipe pointer adalah alamat, bukan nilai data. Sebagai contoh sederhana kita punya variabel pointer integer bernama px (cirinya diawali dengan simbol bintang):

int x, *px;
x = 10;
px = &x;

Pada contoh di atas, perintah x = 10 berarti mengisikan data 10 di lokasi memori milik x. Sedangkan perintah px = &x berarti mengisikan alamat variabel x ke dalam px. Jadi di dalam px berisi alamat memori (kode heksadesimal) sedangkan di dalam x berisi datanya. Lebih jelasnya kita lihat contoh berikut ini:

#include "stdio.h"
void main()
{
int *pi, *pj, k;
int data [] = {10, 20, 30}; //array integer dengan 3 elemen

pi = &data[1]; //pi menunjuk alamat data 20
pj = &data[0]; //pj menunjuk alamat data 10
k = 100;
k = k + *pi + *pj; //100 + 20 + 10 = 130
k = k + *pi; //130 + 20 = 150
k = k - *pj; //150 - 10 = 140
k++; //140 + 1 = 141
k = k + *(pj + 1); //141 + 20 = 161
for(int i=0; i<=5; i++) //menampilkan isi memori di sekitar pj
{
printf("Isi pj = %d di alamat %p\n", *(pj+i), (pj+i));
}
k = k - *(pi - 1); //161 - 10 = 151
printf("K = %d\n", k);
}

Silahkan dicoba di rumah. Any question? Selamat belajar :)