BAB V
POINTER
5.1. Pointer
Pointer adalah variabel yang berisi alamat memori sebagai nilainya dan berbeda
dengan variabel biasa yang berisi nilai tertentu. Dengan kata lain, pointer berisi alamat dari
variabel yang mempunyai nilai tertentu. Pointer tidak hanya berlaku untuk variabel, kita
juga bisa menerapkannya ke fungsi, objek, dll. Implementasinya masih sama seperti yang
kita lakukan dengan variabel.
10 10
Variabel x berisi data 10 alamat variabel x 0x55d7245e
Sebuah pointer dapat berisi alamat dari variabel lain, dan akses langsung ke
nilai dalam variabel pointer dapat dilakukan dengan menggunakan operator. Jadi,
setiap variabel mempunyai data (isi data) dan alamat memori yang menunjukkan
variabel tersebut disimpan dimana.
Ada dua jenis pointer yang disediakan oleh borland c++, yaitu Operator Deference
(&) Dan Operator Reference (*).
1. Operator Deference (&)
Operator deference adalah operator yang memungkinkan kita untuk
mendapatkan/melihat alamat memori milik variable, operator ini juga sering disebut
sebagai address of operator (&). Penggunaannya adalah dengan meletakkan simbol “&”
sebelum variabel yang berarti alamat. Ini akan memaksa kompiler untuk memberikan
alamat memori alih-alih konten/nilai memori itu.
2. Operator Reference (*)
Operator reference adalah operator yang memungkinkan untuk mendapatkan
konten/nilai memori dari alamat memori, operator ini biasa disebut dengan value pointed
by. Operator ini akan menampilkan nilai yang terdapat pada alamat memori, bukan alamat
memori. Selama program berjalan, kita bebas mengubah tujuan penunjuk, mengubahnya
untuk menunjuk ke alamat memori variabel lain, atau menunjuk ke alamat memori yang
bukan variabel.
5.1.1 Cara Membuat Pointer
Setelah memahami fungsi dari kedua operator yang telah dijelaskan di
atas.Sekarang Anda dapat membuat pointer menggunakan dua operator tersebut.
Bentuk penulisan
Gambar 5.1 Bentuk Penulisan
Contoh Penulisan
Gambar 5.2 Contoh Penulisan
Secara umum pointer sebenarnya adalah variabel, aturan untuk variabel juga
berlaku untuk pointer, jadi tidak jauh berbeda dengan variabel. pointer hanya mendapatkan
beberapa perbedaan, yaitu menambahkan dua operator akan menjadikan variabel tersebut
sebagai variabel pointer.
Untuk mengatur variabel pointer, kita hanya perlu menambahkan operator
dereferencing sebelum identitas. Operator dereference tidak harus terikat dengan
identitas, ia juga dapat ditempatkan setelah tipe data atau di antara tipe data dan identitas.
Dari berbagai cara penulisan yang berbeda memiliki arti yang sama, yaitu operator
deference hanya akan berlaku untuk satu variabel.
5.1.2 Cara Mengakses Pointer
Variabel pointer adalah variabel yang memiliki alamat memori sebagai nilai
variabel pointer. Dan di pointer kita dimungkinkan untuk mengakses nilai pointer itu sendiri
dan nilai alamat memori yang dimiliki (ditunjuk) oleh pointer. Pointer adalah variabel,
menggunakan pointer tidak jauh berbeda dengan menggunakan variabel. Untuk
mendapatkan nilai pointer kita hanya perlu memanggil identitas pointer.
plnt panggilan akan mengembalikan nilai penunjuk yang merupakan alamat
memori dari variabel yang ditunjuk oleh pointer tersebut. Karena pointer hanya dapat
memiliki nilai berupa alamat memori, untuk mengubah nilai pointer atau mengubah tujuan
pointer, kita memerlukan operator address-of (&) pada operan sumber.
plnt = &myVar operan sumber mengembalikan alamat memori myVar, dan ini
adalah nilai yang diminta oleh variabel pointer. variabel pointer hanya dapat meneriman
alamat memori dari variabel yang memiliki tipe data yang sama.
5.2 Study Kasus
1. Pointer Konstanta
Flowchart:
Gambar 5.3 Flowchart pointer konstanta
Penjelasan flowchart :
Program dimulai dengan start lalu, menampilkan judul. Kemudian mendeklarasikan
variabel konstan yaitu *nama = “Borlan C++” bertipe data char. Kemudian tampilkan isi dari
variabel nama. Lalu dilanjutkan dengan memproses nama = “ Visual C++ “. Dan tampilkan
lagi isi dari variabel nama tersebut. Program selesai.
Program:
Gambar 5.4 contoh program pointer konstanta
Gambar 5.5 hasil running program pointer konstanta
2. Pointer Variabel
Flowchart:
Gambar 5.6 flowchart pointer deference
Penjelasan:
Program dimulai dengan start, lalu mendeklarasikan variabel ilham, amir, dan raka
sebagai tipedata integer. Kemudian memproses ilham = 75, amir = ilham, dan raka =
&ilham. Kemudian tampilkan nilai dari ilham, amir, dan raka. program selesai.
Program:
Gambar 5.7 program pointer deference
Gambar 5.8 hasil running program pointer deference
3. Pointer
Flowchart:
Gambar 5.9 flowchart operasi aritmatika pointer
Penjelasan :
Program dimulai dengan start, lalu menampilkan judul. Kemudian
mendeklarasikan variabel nilai[3], dan *penunjuk sebagai tipe data integer. Kemudian
memproses nilai[0] = 125, nilai[1] = 345, nilai[2] = 750. Dan memproses bahwa variabel
penunjuk = %nilai[0]. Lalu program tampilkan nilai dari variabel *penunjuk << penunjuk,
*(penunjuk + 1) << (penunjuk + 1), dan *(penunjuk + 2) << (penunjuk + 2). Program
selesai.
Program
Gambar 5.10 program operasi aritmatika
Gambar 5.11 running progam operasi aritmatika pointer
4. Pointer Dalam Array
Flowchart:
Gambar 5.12 flowchart pointer dalam array
Penjelasan:
Program dimulai dengan mendeklarasikan variabel c[4] sebagai tipedata char dan
variabel i sebagai tipedata integer. Kemudian memproses i = 0. Dan masuk ke syarat
perulangan jika i < 4 maka tampilkan “address of c[i]” << &c[i]. kemudian lakukan proses +
+i. Jika syaratnya perulangannya tidak terpenuhi lagi maka program selesai.
Program:
Gambar 5.13 program pointer dalam array
Gambar 5.14 hasil running pointer dalam array
5.3 Kesimpulan Dan Saran
5.3.1 Kesimpulan
pointer berisi alamat dari variabel yang mempunyai nilai tertentu. Pointer tidak
hanya berlaku untuk variabel, kita juga bisa menerapkannya ke fungsi, objek, dll.
Implementasinya masih sama seperti yang kita lakukan dengan variabel. Sebuah pointer
dapat berisi alamat dari variabel lain, dan akses langsung ke nilai dalam variabel pointer
dapat dilakukan dengan menggunakan operator. Jadi, setiap variabel mempunyai data (isi
data) dan alamat memori yang menunjukkan variabel tersebut disimpan dimana. Ada dua
jenis pointer yang disediakan oleh borland c++, yaitu Operator Deference (&) Dan
Operator Reference (*).
5.3.2 Saran
Penggunaan pointer pada proses program harus benar-benar diperhatikan. Sedikit
saja kesalahan dalam menggunakan pointer akan mengakibatkan kesalahan fatal pada
program. Karena pointer bisa langsung menunjukan pada lokasi memori, apabila lokasi
yang ditunjuk salah, berarti data yang diambil juga akan salah, dan sudah tentu program
anda akan menjadi salah juga.