Setelah kita mempelajari berbagai macam struktur data, sekarang dalam postingan ini kita akan membahas Pointer, Pointer merupakan tipe data yang berisi alamat memori dari sebuah variabel, untuk lebih mudah memahami ini, Kita akan coba membahas bagaimana bahasa pemrograman bisa menyimpan nilai dari suatu variabel. Ketika kita mendeklarasikan suatu variabel (misalkan angka), bahasa pemrograman yang kita gunakan akan menyiapkan suatu tempat di dalam memory komputer. Nah, di tempat ini memiliki alamat yang berfungsi untuk menandai lokasi variabel tersebut.
Contoh Ilustrasi tipe data pointer, bayangkan memory komputer sebagai sebuah lemari besar. Variabel ini disimpan di setiap laci lemari tersebut. Setiap laci tersebut memiliki nomor agar mudah diakses. Nomor laci inilah yang akan disimpan sebagai pointer.
Cara Penggunaan Pointer
Agar bisa membuat pointer, sebelumnya kita perlu menyesuaikan variabel yang akan kita akses. Jika kita ingin mendeklarasikan suatu variabel ‘angka’ . Variabel ‘angka’ disiapkan hanya untuk menyimpan tipe data integer. Agar bisa menampung alamat memori dari variabel ‘angka’ ini, kita juga harus membuat pointer yang di-set untuk menyimpan tipe data pointer integer.
Angka : integer
pointer_angka : ^integer
Coba perhatikan dalam contoh kode diatas, tanda ‘arah ke atas’. Ini merupakan cara mendeklarasikan tipe data pointer pada sebuah bahasa pemrograman. ^integer ini artinya kita menyiapkan suatu pointer untuk variabel tipe data integer. Jika kita membutuhkan pointer dalam tipe data lainya, penulisannya juga pasti akan berbeda. Contohnya, kita akan membuat pointer di dalam sebuah pemrograman ke alamat variabel yang memiliki tipe data char, cara penulisannya sebagai berikut:
pointer_kata : ^char
Dalam suatu bahasa pemrograman, kita biasanya membutuhkan suatu karakter yang berfungsi untuk memanggil alamat memori dari sebuah variabel, Contoh dalam bahasa Pascal itu kita menggunakan karakter ‘@’, atau dalam bahasa C/C++ kita menggunakan ‘&’.
angka : integer
poiter_angka : ^integer
pointer_angka = @angka (pada Pascal)
pointer_angka = &angka (pada C/C++)
Pada baris paling akhir, “pointer_angka = @angka” adalah kode yang menghubungkan kedua variabel ini. Variabel pointer_angka ini akan berisi alamat memori dari variabel “angka”. Jika ditampilkan, variabel pointer_angka akan berisi: 40960. Inilah alamat memory yang dipergunakan pascal untuk menyimpan variabel ‘angka’. Alamat ini sepenuhnya ditentukan oleh pascal, terserah akan menyimpan di alamat memori mana.
Tipe pointer dideklarasikan pada bagian deklarasi type.
Bentuk umum deklarasi pointer adalah :
Type
Pengenal = ^simpul;
Simpul = type;
(pengenal : nama pengenal yang menyatakan data bertipe pointer; simpul : nama simpul; tipe : tipe data dari simpul)
Deklarasi Pointer
Tanda ^ di depan nama impul harus ditulis seperti apa adanya menunjukkan bahwa pengenal adalah suatu tipe data pointer. Tipe data simpul yang dinyatakan dalam tipe bia berupa sembarang tipe data, misalnya char, integr, atau real.
Contoh :
Type Bulat : ^integer
Dalam contoh diatas Bulat menunjukkan tipe data baru, yaitu bertipe pointer. Dalam hal ini pointer tersebut akan menunjukkan ke suatu data yang bertipe integer. Misalnya,
X, K : Bulat
Implementasi Pointer Pada Record
Pada program-program terapan, biasanya terdapat sekumpulan data yang dikumpulkan dalam sebuah rekaman (record), maka akan banyak dijumpai tipe data pointer yang elemennya (data yang ditunjukkan) adalah sebuah rekaman.
Contoh :
type
text=string[30];
point=^data;
data=record
nama_peg : teks;
alamat : teks;
pekerjaan : teks;
berikut : point
End
Var
P1, P2 : point;
A,B,C : Teks
Simpul yang berisi medan bertipe pointer dapat digambarkan sbb:

(P1 pada bagian atas, dan P2 pada bagian bawah.)
Pada contoh di slide sebelumnya, P1 dan P2 adalah pointer yang akan menempati lokasi tertentu dalam pengingat. Kedua perubah ini masing-masing belum menunjuk ke suatu simpul nilai, dinyatakan sebagai nil. Untuk mengalokasikan simpul dalam pengingat, statemen yang digunakan adalah statemen new.
Bentuk Umum :
new(P1);
new(P2);
Operasi Pada Pointer
Secara umum ada dua operasi pada pointer dasar :
- Mengkopi pointer, sehingga sebuah simpul akan ditunjuk oleh lebih dari sebuah pointer.
- Mengkopi isi simpul, sehingga dua atau lebih simpul yang ditunjuk oleh pointer yang berbeda mempunyai isi yang sama.
Syarat-syarat operasi pointer adalah kedua pointer yang dioperasikan harus mempunai deklarasi yang sama.
Contoh :
Type Mahasiswa = ^Data;
^Data = record
nama : string;
alamat : string;
Brikut : Mahasiswa
End;
Var T1, T2 : Mahasiswa;
Pada deklarasi di atas, pointer T1 dan T2 mempunyai deklarasi simpul yang sama, sehingga memenuhi syarat untuk operasi pointer. Sekarang kita berikan statement
New (T1);
New (T2);
Artinya kita mempunyai dua simpul, yaitu :
