A. Pengertian Pointer
Pointer adalah penunjuk suatu variabel. Karena menunjuk suatu variabel,
maka pointer wajib memiliki alamat dari variabel yang ditunjuknya. Kadangkala
dalam program yang besar, penghematan memori wajib untuk dilakukan. Dengan
mekanisme copy dan paste nilai variabel satu kedalam variabel
lain, akan sangat memboroskan memori. Dengan mekanisme pointer, suatu variabel
dalam suatu fungsi dapat diakses oleh fungsi yang lain.
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 (*).
B. Macam-macam Operator pada Pointer
1. Address-of Operator (&),
adalah operator yang memungkinkan kita untuk mendapatkan/melihat alamat
memori yang dimiliki oleh variabel tersebut. Cara menggunakanya adalah dengan
meletakan tanda & di depan identitas saat pemanggilan variabel. Hal itu
akan membuat compiler memberikan alamat memori bukan isi/nilai dari memori
tersebut.
Contoh Program
#include <iostream>
using namespace std;
int main()
{
int var = 2;
cout<<&var<<"
memiliki nilai "<<var<<endl;
return 0;
}
|
Pointer adalah sebuah variabel yang menyimpan alamat memori dari variabel
lainnya, kita dimungkinkan untuk mengubah nilai dari variabel yang ditunjuk
oleh pointer dan menyalin. Selama program berjalan kita bebas mengubah tujuan
dari pointer, mengubah untuk menunjuk ke alamat memori variabel lain atau
menunjuk ke alamat memori yang bukan merupakan variabel.
C. Mendirikan
Pointer
Setelah anda
mengerti fungsi-fungsi dari dua operator yang telah di jelaskan di atas.
Sekarang anda dapat mendirikan pointer dengan menggunakan dua operator
tersebut.
Bentuk
Penulisan
tipeData *identitas;
//atau
tipeData *identitas = &var;
|
Contoh Penulisan
int *pInt;
double *pDouble = &myVar;
|
pada umumnya pointer sebenarnya adalah variabel, peraturan yang dimiliki
variabel juga berlaku pada pointer, jadi tidak jauh beda dengan variabel.
pointer hanya mendapatkan beberapa perbedaan yaitu penambahan dua operator yang
akan membuat variabel menjadi variabel pointer.
Untuk mendirikan sebuah variabel pointer kita hanya menambahkan dereference
operator sebelum identitas. Operator dereference tidak harus melekat pada
identitas, operator tersebut juga bisa di letakan setelah tipe data atau di
antara tipe data dan identitas. dari berbagai cara penulisan tersebut memiliki
makna yang sama yaitu satu operator dereference hanya akan berlaku pada saru
variabel.
Pointer tidak hanya berlaku pada variabel, kita juga dapat melakukanya pada
function, objek dan lain-lain. Dan cara implementasi pointer selain pada
variabel, caranya masih sama seperti kita melakukanya pada variabel.
D. Cara Mengakses Pointer
Variabel pointer adalah variabel yang memiliki alamat memori sebagai nilai
dari variabel pointer tersebut. Dan pada pointer kita dimungkinkan untuk
mengakses nilai dari pointer itu sendiri dan mengakses nilai dari alamat memori
yang dimiliki(ditunjuk) oleh pointer. Pointer merupakan variabel, untuk
mengakses pointer tidak jauh beda dengan cara mengakses variabel. Untuk
mengakses nilai dari pointer kita hanya cukup memanggil identiatas dari pointer
tersebut.
pemanggilan itu akan menghasilkan nilai dari pointer yang berupa alamat
memori dari variabel yang ditunjuk oleh pointer tersebut. Karena pointer hanya
dapat mememiliki nilai berupa alamat memori, untuk mengubah nilai dari pointer
atau mengubah tujuan dari pointer kita membutuhkan operator address-of (&)
pada operand sumber.
pInt = &myVar
|
operand sumber
akan menghasilkan alamat memori dari myVar, dan hal itu merupakan nilai yang
dibutuhkan oleh variabel pointer. Sebelum anda mempraktikan untuk mengubah nilai
dari variabel pointer ada satu hal yang perlu anda tau. Bahwa variabel pointer
hanya dapat meneriman alamat memori dari variabel yang memiliki tipe data yang
sama.
Contoh Program :
#include
<iostream>
using namespace
std;
int main()
{
int
var1 = 2, var2 = 5;
int
*pVar = &var1;
cout<<"var1 = "<<&var1<<endl;
cout<<"pVar = "<<pVar<<endl;
cout<<"====="<<endl<<endl;
pVar=&var2;
cout<<"var2 = "<<&var2<<endl;
cout<<"pVar = "<<pVar<<endl;
return 0;
}
|
Variabel pointer dapat menyimpan
alamat memori bukan berarti anda dapat bebas memberi alamat memori secara
langsung pada pointer.
int *pInt =
0x012345;
|
Hal di atas tidak dimungkinkan untuk
dilakukan. Karena isi/nilai dari variable pointer merupakan sebuah alamat
memori maka untuk mengakses nilai dari variabel yang dutunjuk oleh pointer kita
membutuhkan operator dereference (*).
*pInt
|
Dalam pointer kita dimugkinkan untuk
menyalin dan mengubah nilai pada variabel yang ditunjuk oleh pointer.
*pInt = 2
|
Sebelum anda
mencoba mengubah nilai dari memori yang ditunjuk oleh pointer anda harus yakin
bahwa memori itulah yang ingin anda ubah nilainya. Jangan pernah mengubah
memori yang bukan milik program anda, karena hal itu terlalu memiliki resiko
yang cukup serius untuk komputer anda. Dan satu hal yang perlu anda ingat
adalah, berilah nilai awal di saat deklarasi pointer. Itu dapat menimalisir
kemungkinan kecelakaan, hal itu harus dilakukan karena saat deklarasi variabel
pointer tanpa inisialisasi maka pointer akan memiliki nilai sampah.
REFERENSI