Anda di halaman 1dari 6

MODUL 8

POINTER

1. Pointer
Pointer adalah sebuah variabel dengan tipe tertentu yang dapat digunakan untuk
mencatat alamat dari suatu variabel yang setipe dengannya, mengakses dan
memanipulasi data yang tersimpan dalam alamat tersebut. Jika int x adalah sebuah
variable bertipe integer maka &x berarti alamat dari x. Jika p adalah sebuah pointer
bertipe integer maka p dapat menyimpan dan memegang alamat dari x tersebut.

Deklarasi Pointer
Dalam ANSI/C, simbol asterisk * digunakan untuk mendeklarasi sebuah pointer. Bentuk
umum pendeklarasian pointer adalah: tipe_data *nama_pointer;

Sebagai contoh: int *p;

Simbol asterik * memberitahu compiler bahwa sebuah pointer bertipe int


dideklarasikan. Pendeklarasian seperti contoh di atas hanya memberitahukan compiler
bahwa p adalah pointer bertipe int tanpa memberikan nilai awal apapun kepada p. Jika
sebuah pointer tidak diberi nilai awal secara eksplisit oleh programmer, maka compiler
secara otomatis memberi nilai NULL sebagai nilai awal kepada pointer tersebut. Salah
satu cara menguji apakah sebuah pointer bernilai NULL adalah:

if(p == NULL){
:
}

2. Pointer pada pemrograman C++


Deference (&)

Deference (&) merupakan suatu operator yang berfungsi untuk menanyakan alamat dari
suatu variabel.Apabila kamu memberikan simbol & pada awal variabel dan mencetak
hasilnya pada jendela CLI, maka yang akan tercetak adalah alamat dari variabel tersebut
bukan nilai yang ditampung oleh variabel tersebut. Berikut contoh programnya:
Hasil output programnya adalah:

Alamat variabel ‘a’ pada setiap komputer akan berbeda-beda tergantung kompiler
dalam mengalokasikan memori untuk suatu variabel.

Reference (*)

Reference (*) merupakan suatu operator yang berfungsi menyatakan suatu variabel
pointer. Sama halnya dengan operator deference, peletakan simbol operator reference
diletakan diawal variabel. Operator reference ini akan membuat suatu variabel pointer
untuk menampung alamat. Nah untuk lebih mudahnya perhatikan contoh berikut:
Hasil output programnya adalah:

Dari hasil output program di atas dapat dipahami bahwa, nilai variabel b sama dengan
variabel a, walaupun variabel b tidak diberikan nilai yang sama dengan variabel a. Hal ini
terjadi karena variabel pointer b menunjuk alamat variabel a dan variabel pointer b
dapat mengakses nilai yang terkandung dalam alamat yang ditunjuknya.

3. Pointer dan Array

Tahukah kamu bahwa jika kamu menuliskan sebuah array tanpa tanda kurung kotak ([])
maupun indeksnya, maka array tersebut menunjuk atau bersi alamat elem pertama dari
array tersebut. Misalkan kamu membuat sebuah pointer bertipe int dengan
nama pointerArray dan sebuah array dengan tipe yang sama yaitu int dengan
nama nilaiArray, maka pemberian nilai berikut sah dan dapat dilakukan:

Dari sintaks di atas, variabel pointer dengan nama pointrArray sekarang menunjuk pada


alamat memori elemen pertama array dengan nama nilaiArray. Nah secara tidak
langsung kita dapat mengakses nilai elemen array dengan menggunakan variabel
pointer

4. Pointer Sebagai Parameter Suatu Fungsi

Seperti halnya dengan array, pointer dapat digunakan sebagai parameter suatu fungsi.
Karena sifat pointer yang hanya sebagai penunjuk, maka setiap perubahan yang terjadi
pada parameter, sebenarnya terjadi pada variabel yang ditunjuk bukan pada variabel
pointer. Berikut contoh program sederhananya:
Berikut adalah output programnya:

Pada program diatas, terdapat fungsi tambah, dimana ketika alamat suatu variabel
diberikan sebagai parameter fungsi, nilai 20 akan ditambahkan pada alamat tersebut.
Perbedaan parameter berupa pointer dan non-pointer adalah, pada variabel non-pointer,
ketika kamu ingin memasukkan nilai pada sebuah variabel kedalam parameter, kamu harus
memasukkan nilai dari variabel tersebut. Untuk parameter berupa pointer, kamu cukup
memasukkan alamat variabel yang menampung nilai dengan operator (&) kedalam
parameter fungsi.

5. Pointer Pada Classes C++


Selain diaplikasikan pada variabel, pointer ternyata dapat diaplikasikan pada sebuah
kelas. Deklarasi pointer pada kelas, juga sama seperti pointer-pointer pada umumnya
dengan menggunakan sintaks sebagai berikut:

1 namaKelas *pointerKelas

Deklarasi di atas akan menghasilkan suatu pointer yang dapat digunakan dalam
menunjuk member suatu kelas. Sekarang bagaimana menghubungkan antara objek
suatu kelas dan pointer dimana kamu dapat menggunakan pointer sebagai jalan akses
pemanggilan member kelas? Berikut contoh sintaks sederhananya:

1 bangun objek;
2 bangun *pointerKelas;
3 pointerKelas = &objek;
Pada sintaks di atas, yaitu baris pertama dan kedua menunjukan terdapat satu buah
objek dan pointer kelas bangun. Kemudian di baris ketiga,
variabel pointerKelas diberikan alamat objek dari kelas bangun. Sehingga sekarang
variabel pointerKelas berisi alamat dari objek kelas bangun.

Setelah kamu mendapatkan alamat objek kelas dalam pointer kelas, sekarang
bagaimana cara mengakses member kelas melalui pointer? Kamu bisa menggunakan
operator (->). Sehingga apabila kelas bangun memiliki member bernama luas, maka
kamu dapat mengaksesnya dengan menuliskannya sebagai berikut:

1 pointerKelas->luas;
contoh dengan menggunakan kode program kelas sederhana :

Berikut hasil output programnya:

Dari output program di atas terlihat bahwa, nilai yang dihasilkan oleh member luas()
baik cara akses menggunakan objek maupun pointer adalah sama.

Anda mungkin juga menyukai