Pointer Dalam Bahasa
C++
A. Pengertian Pointer 
     Pointer adalah sebuah variabel yang
berisi alamat lain. Suatu pointer dimaksudkan untuk menunjukan ke suatu alamat
memori sehingga alamat dari suatu variabel dapat diketahui dengan mudah.Intinya:
a. Pointer adalah suatu variabel yang menunjuk ke alamat memory variabel yang lainnya.
b. Variabel pointer berisi suatu alamat (alokasi memory).
a. Pointer adalah suatu variabel yang menunjuk ke alamat memory variabel yang lainnya.
b. Variabel pointer berisi suatu alamat (alokasi memory).
Pointer adalah built-in type di C dan C++, dimana C++
mengambil konsep pointer dari C. Pointer sebenarnya sangat terkait dengan
"Abstract C Machine", yaitu model mesin abstrak dimana program C
bekerja. Abstract C Machine adalah mesin abstrak dimana mesin tersebut memiliki
prosesor untuk   menginterpretasikan   stream 
 of   instruction,   dan   addressable memory 
yang  terbagi  kedalam  3 bagian  :  
      1.      automatic  memory
      2.      static memory 
      3.      free  memory. 
 Automatic 
memory,  static memory  dan  free  memory. 
Addressable memory adalah memory  yang konten-nya  dapat 
diambil  jika  diketahui  alamatnya.  Lebih 
jauh  lagi, terdapat asumsi bahwa konten memori dapat di ambil dengan
waktu konstan, tidak peduli berapa nilai alamat.Hal ini disebut dengan Random
Access Memory.
Pointer  adalah  sebuah  variabel  yang 
berisi  alamat  lain.  Suatu  pointer dimaksudkan untuk
menunjukan ke suatu alamat memori sehingga alamat dari suatu variabel dapat
diketahui dengan mudah. Arti pointer
dalam bahasa sehari-hari adalah putunjuk atau bisa di bilang penentu atau
pointer secara sederhana bisa diartikan sebagai tipe data yang nilainya
mengarah pada nilai yang terdapat pada sebuah area memori (alamat memori).namun
dalam
Dalam  bahasa  C,  Pointer  bisa  berfungsi 
sebagai  variabel  array  berarti
pointer
sebagai penunjuk elemen array ke-0 dalam variabel C. 
B.   Fungsi
Pointer
Adapun fungsi dari pointer yaitu : 
      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.  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 :
a.        Mengirimkan 
“Parameter  yang  berupa  variabel”  ke  dalam 
fungsi,  artinya  nilai variabel bisa diubah di dalam fungsi.
b.      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.
c.        Karena pointer dapat
meningkatkan kinerja untuk operasi yang dilakukan secara berulang. Dengan
syarat Kalau mendeklarasikan pointer kedalam array, tidak boleh menggunakan
tanda bintang.
d.       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.
C.   Penggunaan Awal
Pointer
 Tipe Data Pointer :
Dimana
Tipe_data merupakan tipe dari data yang ditunjuk, bukan tipe dari pointer-nya.
Contoh :
1.  Mensubstitusikan  address 
sebuah  variabel  ke  pointer  dengan  memakai 
address
operator &. 
| 
a.      
  int x; 
b.      int *ptr; 
c.      
  ptr =
  &x; | 
2. Mensubstitusikan address awal sebuah array ke
pointer
| 
a. char t[5]; 
b. char *ptr; 
c. ptr = t; | 
3. Mensubstitusikan address salah satu elemen array
dengan address operator char t[5] ;
| a.
char *ptr; ptr = &t[3]; | 
4. Mensubstitusikan address awal character string ke
pointer char
| 
a. char *ptr; ptr =
  "jakarta"  | 
5. Mensubstitusikan NULL pada pointer.
 NULL ada pointer
kosong, menunjukkan suatu status dimana pointer itu belum diinisialisasikan
dengan sebuah address tertentu.
6.Memakai fungsi MALLOC.
D.  Operator Pointer
Ada
2 operator pointer yang dikenal secara luas, yaitu operator & dan operator
*.
1. 
 Operator &
Operator & merupakan operator alamat. Pada saat
pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya
pada memory, hal ini akan dilakukan secara otomatis oleh kompiler dan operating
sysem pada saat run-time. Jika ingin mengetahui   dimana 
 suatu   variable   akan   disimpan, 
 dapat   dilakukan   dengan memberikan tanda ampersand
(&) didepan variable , yang berarti "address of".
Contoh
:   ted = &andy; Penulisan tersebut berarti akan memberikan
variable ted alamat dari variable andy. Karena variabel andy diberi awalan
karakter ampersand (&), maka yang menjadi pokok disini adalah alamat dalam
memory, bukan isi variable. Misalkan andy diletakkan pada alamat 1776 kemudian
dituliskan instruksi sbb : andy = 25; fred = andy; ted = &andy;
2. 
 Operator *
Operator * merupakan operator reference. Dengan menggunakan
pointer,kita dapat mengakses nilai yang tersimpan secara langsung dengan
memberikan awalan operator asterisk (*) pada identifier pointer, yang berarti
"value pointed by".
Contoh
: beth = *ted;
(dapat
dikatakan:"beth sama dengan nilai yang ditunjuk oleh ted") beth = 25,
karena ted dialamat 1776, dan nilai yang berada pada alamat 1776 adalah 25.
Ekspresi dibawah ini semuanya benar, perhatikan : 
andy
= 25; &andy = 1776; 
ted
= 1776; *ted = 25;
Ekspresi
pertama merupakan assignation bahwa andy = 25;.
Kedua, 
menggunakan  operator  alamat  (address/derefence 
operator  (&)),  sehingga akan mengembalikan alamat dari variabel
andy.
Ketiga
bernilai benar karena assignation untuk ted adalah ted = &andy;.
Keempat
menggunakan reference operator (*) yang berarti nilai yang ada pada alamat yang
ditunjuk oleh ted, yaitu 25.
Maka
ekspresi dibawah ini pun akan bernilai benar : *ted = andy;
E.   Macam – macam Pointer
1. 
 Pointer Bertipe Void
Pada C++ terdapat pointer yang dapat menunjuk ke tipe data
apapun, pointer semacam ini dideklarasikan dengan tipe void sehingga sering
dikenal dengan istilah Void Pointer. Berikut ini contoh listing program yang
menggunakan void pointer.
2. 
 Pointer Aritmetika
Elemen-elemen array biasanya diakses melalui indeksnya,
sebenarnya ada cara lain yang lebih efisien, yaitu dengan menggunakan pointer.
Pointer semacam ini disebut dengan istilah pointer aritmetika. Konsep dasar
dari pointer aritmetika ini adalah melakukan operasi aritmetika terhadap
variabel yang bertipe pointer.
3. 
 Pointer NULL
Pada  saat  program  dijalankan, 
pointer  akan  menunjuk  ke  alamat  acak  pada
memori,sehingga diperlukan inisialisasi agar hal tersebut tidak terjadi. Dalam
C++ terdapatsebuah cara untuk membuat pointer tidak menunjuk ke alamat manapun,
yaitu denganmengisikan ponter tersebut dengan nilai NULL. Karena hal inilah
maka pointer tersebutsering dinamakan pointer NULL (NULL Pointer). Sebagai
contoh kita  mempunyai  pointer  p,  dan  kita 
ingin  melakukan  inisialisasi  pada  pointertersebutdengan
nilai NULL maka sintaknya adalah sebagai berikut. P=NULL; 
F.   Contoh Program
| 
#include <iostream> 
#include<string> 
using namespace std; 
int main () 
{ 
   
  int *ptrArray; 
   
  int A[5] = {1,3,5,7,9}; 
   
  ptrArray = A; 
   
  //cout << "Nilai dari ptrArray    :" <<ptrArray=2<<endl; 
   
  for(int i=0 ; i<=4 ; i++) 
   
  { 
      
  cout << A[i] <<" "; 
   
  } 
     
  cout <<"\n PAKAI POINTER" <<endl; 
     
  for(int i=0 ; i<=4 ; i++) 
   
  { 
      
  cout << *ptrArray+i<<" "; 
   
  } 
} | 
G. Hasil Running 
 
REFERENSI:
 
