#11 Struktur Data : Pointer

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.

Baca juga :  #4 Struktur Data : Stack

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.
Baca juga :  #8 Struktur Data : Graph - Pengertian, Jenis, dan Algoritma

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 :

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *