Sesuatu fasilitas yang tersedia dalam C++ yang
tidak ditemukan pada bahasa pemrogamanlainnya adalah pointer, dengan pemanfaatan
pointer programmer dapat melakukan manipulasi memori secara langsung. Sebuah pointer menyediakan akses tidak langsung terhadap
objek.Pada dasarnya manusia telah menggunakan pointer pada dunia nyata setiap
saat.Sangat banyak contoh yang dapat kita lihat.Misalnya saja pada saat seorang
dosen mengatakan, “Kerjakan Tugas 1.1 di buku,” telah terjadi penugasankepada
mahasiswa secara tidak langsung.Contoh lainya adalah sebuah URL (Uniform
Resource Locator), seperti http://www.sebarkan.comjuga merupakan sebuah
pointer.URL tersebut memberitahukan lokasi halaman web tersebut.Jika halaman
web pindah, makaURL tidak berlaku lagi dan menunjuk ke halaman yang sudah tidak
ada.Oleh karena itu pengetahuan yang banyak tentang pointer akan sangat
membantu bagi seseorang yang ingin mempelajari bahasa C/C++.
Pengertian Pointer
Pointer adalah variabel yang menunjuk pada variabel lainnya.
Sebelumnya pernah dijelaskan mengenai variabel, menyatakan bahwa. Variabel merupakan
sebuah memori perwakilan dari alamat memori pada komputer. Hal yang sebenarnya
terjadi adalah pointer itu menyimpan alamat memori yang dia tunjuk. Pada
pointer kita dimungkinkan untuk menunjuk suatu memori, mengubah nilai dan
menyalin nilai memori tersebut secara tidak langsung (perantara melalui
variabel pointer).Sebelum kita mempelajari pointer, ada dua hal yang perlu anda ketahui.
Dalam pointer terdapat dua macam operator yang akan kita gunakan, yaitu
Address-of (&) dan Dereference operator (*).
Fungsi
Pointer
1. Kegunaan pointer yang utama adalah untuk menyimpan alamat
memori dari sebuah variabel (data type atau object dari class). Selain
menyimpan alamat dari variabel, pointer juga dapat digunakan untuk menyimpan
alamat dari sebuah fungsi (function pointer).
2. Function pointer telah digunakan sejak dikenalkannya bahasa
C,dan banyak digunakan untuk sebuah fungsi callback atau untuk meningkatkan
readability dari sebuah code.
3. Anda dapat memperlakukan function pointer seperti pointer
biasa (pointer ke datatype/object), anda dapat menyimpan,mengirimkan, merubah
address, atau meng-evaluasi address dari pointer ke fungsi ini dengan sifat
tambahan anda dapat memanggil fungsi yang ditunjuk oleh function pointer.
Pointer juga berguna untuk :
4. Mengirimkan
“Parameter yang berupa
variabel” ke dalam
fungsi, artinya nilai variabel bisa diubah di dalam fungsi.
5. Untuk membuat variabel DINAMIS (Bukan variabel Statis)
penggunaan function pointer pada C++ dibatasi, yaitu function pointer tidak
boleh menunjuk pada function yang berada dalam sebuah class (class member
function) kecuali function tersebut berjenis static.
6. Karena pointer dapat meningkatkan kinerja untuk operasi yang
dilakukan secara berulang. Dengan syarat Kalau mendeklarasikan pointer kedalam
array, tidak boleh menggunakan tanda bintang.
7. Pointer juga di gunakan untuk mengalokasikan tempat pada
memori secara dinamis yakni dapat diubah-ubah alokasi tempatnnya pada memori
data yang dimasukkan sebagai nilai pointer akan selalu tersimpan sehingga
diperlukan penghapusan yang tujuannya
untuk mengosongkan memori,
perintah yang digunakan
untuk menghapus memori adalah delete [] nama variable.
Macam
– macam pointer
1.
Operator
Dereference (&)
Operator Dereference (&) yaitu
operator yang berfungsi mendeklarasikan sebuah variabel didalam penggantian
memori. operator ini biasa disebut dengan "address of". Jadi
seandainya sobat ingin mengetahui dimana variabel akan disimpan (untuk
mengetahui letak / alamat penyimpanan variabel di memori), sobat dapat
memberikan tanda "&" (ampersand sign) didepan variabel, yang
berarti "address of". Karena dengan menggunakan operator dereference
(&) ini, sebuah variabel akan menghasilkan alamat lokasi penyimpanannya di
memori. Sebagai contoh "int angka" ditempatkan pada memori dengan
alamat 0x6ffe34 untuk mengetahuinya sobat dapat menuliskan code seperti ini
cout<<"\nAlamat variabel angka (&angka) :
"<<&angka; berikut code lengkapnya:
Seandainya pada operator
Dereference (&) sobat dapat mengeluarkan alamat memory dari sebuah
variabel, sedangkan pada Operator Reference (*) sobat dapat mengeluarkan
(menampilkan) nilai dari alamat memori yang di tunjuk. untuk penggunaan nya sendiri
sobat dapat menambahkan identifier asterisk (*) didepan variabel. biasanya
Operator reference disebut dengan "value pointed by"
Dari contoh program diatas, nilai *angkax adalah "90", hal tersebut karena pointer angkax menjunjuk ke variabel angka sehingga apabila kita menuliskan code cout<<"\nNilai yang ditunjuk pointer *angkax : "<<*angkax; maka akan keluar angka 90 karena kita mengeluarkan nilai dari alamat memori yang ditunjuk oleh pointer angkax (nilai / value yang berada di alamat memori 0x6ffe34).untuk lebih memahami materi Pointer pada C++ ini, khususnya dalam penggunaan Operator Dereference (&) dan Operator Reference (*), kita akan membahas satu lagi contoh program pointer lengkap dengan penjelasannya.
3. Pointer dan Array
(pointer to array)
Hubungan
antara pointer dan array pada C
sangatlah erat. Sebab sesungguhnya array secara internal akan diterjemahkan
dalam bentuk pointer. Pembahasan berikut akan memberikan gambaran hubungan
antara pointer dan array. Misalnya dideklarasikan di dalam suatu fungsi
static
int tgl_lahir[3] = { 01, 09, 64 };
dan
int
*ptgl;
Kemudian diberikan instruksi
ptgl = &tgl_lahir[0]; //pointer to array
of integer
maka ptgl akan berisi alamat dari elemen array
tgl_lahir yang berindeks nol. Instruksi di atas bisa juga ditulis menjadi
ptgl
= tgl_lahir;
sebab
nama array tanpa tanda kurung menyatakan alamat awal dari array. Sesudah
penugasan seperti di atas,
*ptgl
dengan sendirinya menyatakan elemen pertama
(berindeks sama dengan nol) dari array tgl_lahir. Hal ini bisa dilihat melalui pembuktian
program berikut.
4. Pointer Sebagai Parameter Fungsi
a. Penerapan pointer sebagai parameter yaitu jika diinginkan agar nilai suatu variabel internal dapat diubah oleh fungsi yang dipanggil.
b. Sebagai contoh dapat dilihat pada fungsi berikut.
c. Fungsi di atas dimaksudkan agar kalau dipanggil, variabel yang berkenaan dengan parameter aktual dapat diubah nilainya, masing-masing dinaikkan sebesar 2. Contoh pemanggilan :
d. Perhatikan, dalam hal ini variabel a dan b harus ditulis diawali operator alamat (&) yang berarti menyatakan alamat variabel, sebab parameter fungsi dalam pendefinisian berupa pointer.
Referensi
http://yuliana.lecturer.pens.ac.id/Konsep%20Pemrograman/Teori/T12-Pointer(1).pdf
https://www.belajarcpp.com/tutorial/cpp/pointer/
http://www.materidosen.com/2016/11/pointer-pada-c-lengkap-contoh-program.html