Pointer
Merupakan
sebuah variabel yang berisi alamat dari
variabel lain. Suatu
pointer dimaksudkan untuk menunjukan ke suatu alamat memori sehingga alamat
dari suatu variabel dapat diketahui dengan mudah.
a. Operator Pointer
Terdapat dua macam operator pointer yang disediakanoleh Borland C++:
1. Operator dereference ( & )
2. Operator reference ( * )
1.) Operator Dereference ( & )
Didalam mendeklarasikan suatu variabel harus pada lokasi yang pasti didalam penggantian memori.Pada umumnya kita tidak dapat menentukan dimana variabel akan ditempatkan Terkadang secara otomatisdilakukan oleh kompiler dan sistem operasi yang sedang aktif, tetapi sesekali sistem operasi akan memberikan banyak alamat yang kita tidak mengetahui dimana variabel ditempatkan. Hal ini dapat dilakukan dengan memberikan suatu identifier “&” (ampersand sign) didepan nama variabel, operator ini biasa disebut dengan “address of” atau operator alamat. Dengan menggunakan operator dereference ( & ) ini, suatu variabel akan menghasilkan alamat lokasi memori.
Sebagai contoh ILHAM ditempatkan pada memori dengan alamat 0x0012ff88 dan dideklarasikan sebagai berikut:
ILHAM = 75;
AMIR = ILHAM; // AMIR sama dengan ILHAM (75)
RAKA = &ILHAM; // RAKA sama dengan Address Of ILHAM (0x0012ff88)
pointer dimaksudkan untuk menunjukan ke suatu alamat memori sehingga alamat
dari suatu variabel dapat diketahui dengan mudah.
a. Operator Pointer
Terdapat dua macam operator pointer yang disediakanoleh Borland C++:
1. Operator dereference ( & )
2. Operator reference ( * )
1.) Operator Dereference ( & )
Didalam mendeklarasikan suatu variabel harus pada lokasi yang pasti didalam penggantian memori.Pada umumnya kita tidak dapat menentukan dimana variabel akan ditempatkan Terkadang secara otomatisdilakukan oleh kompiler dan sistem operasi yang sedang aktif, tetapi sesekali sistem operasi akan memberikan banyak alamat yang kita tidak mengetahui dimana variabel ditempatkan. Hal ini dapat dilakukan dengan memberikan suatu identifier “&” (ampersand sign) didepan nama variabel, operator ini biasa disebut dengan “address of” atau operator alamat. Dengan menggunakan operator dereference ( & ) ini, suatu variabel akan menghasilkan alamat lokasi memori.
Sebagai contoh ILHAM ditempatkan pada memori dengan alamat 0x0012ff88 dan dideklarasikan sebagai berikut:
ILHAM = 75;
AMIR = ILHAM; // AMIR sama dengan ILHAM (75)
RAKA = &ILHAM; // RAKA sama dengan Address Of ILHAM (0x0012ff88)
2.) Operator
Reference ( * )
Dengan
menggunakan operator anda dapat mengakses secara langsung nilai
yamg
terdapat didalam variabel yang berpointer,
hal ini dapat dilakukan dengan
menambahkan
identifier asterisk ( * ), agar dapat menterjemahkan nilai sebenarnya
dari suatu
variabel. Operator ini biasa disebut dengan “value pointed by”.
Dengan
menggunakan operator reference ( * ) ini, menghasilkan nilai yang
berada pada
suatu alamat memori
Sebagai
contoh ILHAM ditempatkan pada memori denganalamat 65524 dan
dideklarasikan
sebagai berikut:
ILHAM =
75;
RAKA =
&ILHAM; // RAKA sama dengan Address Of ILHAM (0x0012ff88)
RAFLI =
*RAKA; // RAFLI sama dengan value pointed by RAKA(75)
B. Deklarasi
Pointer Pada Konstanta
Suatu
pointer dapat dideklarasikan secara konstanta
atau secara tetap tidak dapat diubah. Untuk mendeklarasikan
pointer secara konstanta dengan memberikan kata const didepan nama
konstanta.
Bentuk
penulisan:
tipe_data * const nama_konstanta;
Contoh :
//----------------------------------//
//Pendeklarasian Pointer Konstanta //
//----------------------------------//
#include
#include
#include
void main( )
{
char *const nama = "Borland C++";
clrscr( );
cout<<"Nama Program = "<
nama = "Visual C++";
cout<<"Nama Program = "<
getch( );
}
//Pendeklarasian Pointer Konstanta //
//----------------------------------//
#include
#include
#include
void main( )
{
char *const nama = "Borland C++";
clrscr( );
cout<<"Nama Program = "<
cout<<"Nama Program = "<
}
Pada
program diatas, terdapat kesalahan dan
tidak dapat dijalankan, penyebabnya pada
pernyataan nama = "Borland C++";.
Karena variabel nama, merupakan pointer konstanta,
yaitu tidak dapat diubah-ubah. Pesan Kesalahan
Yang Tampil adalah:
Cannot
modify a const object
Error
Message yang akan dihasilkan, dari program contoh-1 diatas adalah:
C. Deklarasi
Pointer Pada Variabel
Karena
keakhlian dari pointer untuk menunjuk secaralangsung kesuatu nilai, memeriksa
satu persatu data yang memiliki pointer
pada saat variabel tersebut pertama kali
dideklarasikan.
Bentuk
penulisan:
tipe_data *nama_variabel;
Contoh 1:
//-------------------------------//
//Penggunaan Pointer Dereference //
//-------------------------------//
#include
#include
#include
main( )
{
int ilham, amir, *raka;
clrscr( );
ilham = 75;
amir = ilham;
raka = &ilham;
cout<<"Nilai ILHAM = "<
cout<<"Nilai AMIR = "<
cout<<"Nilai RAKA = "<
getch();
}
//Penggunaan Pointer Dereference //
//-------------------------------//
#include
#include
#include
main( )
{
int ilham, amir, *raka;
clrscr( );
ilham = 75;
amir = ilham;
raka = &ilham;
cout<<"Nilai ILHAM = "<
}
Contoh 2 :
//-----------------------------//
//Penggunaan Pointer Reference //
//-----------------------------//
#include
#include
#include
main( )
{
int ilham, *raka, rafli;
clrscr( );
ilham = 75;
raka = &ilham;
rafli = *raka;
cout<<"Nilai ILHAM = "<
cout<<"Nilai RAKA = "<
cout<<"Nilai RAFLI = "<
getch( );
}
//Penggunaan Pointer Reference //
//-----------------------------//
#include
#include
#include
main( )
{
int ilham, *raka, rafli;
clrscr( );
ilham = 75;
raka = &ilham;
rafli = *raka;
cout<<"Nilai ILHAM = "<
}
D.
Pointer Pada Pointer
Tidak terbatas menunjuk alamat dari suatu variabel, pointer dapat pula menunjuk ke pointer lainnya. Didalam pendeklarasianya, hanya menambahkan pointer reference ( * ) pada variabel yang akan ditunjuk.
Sebagai contoh :
Tidak terbatas menunjuk alamat dari suatu variabel, pointer dapat pula menunjuk ke pointer lainnya. Didalam pendeklarasianya, hanya menambahkan pointer reference ( * ) pada variabel yang akan ditunjuk.
Sebagai contoh :
char ilham;
char *raka; //pointer ke variabel
char **amir; //pointer pada pointer
ilham = '75';
raka = &ilham;
amir = &raka;
char *raka; //pointer ke variabel
char **amir; //pointer pada pointer
ilham = '75';
raka = &ilham;
amir = &raka;
Contoh
:
// -----------------------------//
//Penggunaan Pointer to Pointer //
//------------------------------//
#include
#include
#include
main()
{
int ilham;
int *raka; //pointer ke variabel
int **amir; //pointer pada pointer
clrscr( );
ilham = 75;
cout<<"Nilai ILHAM = "<
//-> Penugasan Ke Alamat Memori
raka = &ilham;
amir = &raka;
cout<<"Nilai RAKA Hasil Mengakses ILHAM = ";
cout<<*raka<
cout<<"Nilai AMIR Hasil Mengakses ILHAM = ";
cout<<**amir<
getch( );
}
//Penggunaan Pointer to Pointer //
//------------------------------//
#include
#include
#include
main()
{
int ilham;
int *raka; //pointer ke variabel
int **amir; //pointer pada pointer
clrscr( );
ilham = 75;
cout<<"Nilai ILHAM = "<
raka = &ilham;
amir = &raka;
cout<<"Nilai RAKA Hasil Mengakses ILHAM = ";
cout<<*raka<
cout<<**amir<
}
E. Pointer pada Array
Konsep Array diantaranya adalah banyak loncatan dari pointer satu ke pointer yang lain. karena secara internal array juga menyatakan alamat, yaitu pengenal array sama dengan alamat pada elemen pertama, pada array. Sebagai contoh sederhana dapat anda lihat pada contoh program berikut:
Contoh :
//------------------------------//
//Penggunaan Pointer to Array //
//------------------------------//
#include
#include
#include
main( )
{
int i;
int nilai[5];
int *ptrnilai;
ptrnilai = nilai;
for(i=1;i<=5;i++)
{
cout<<"Masukan Nilai Pertama = ";
cin>>nilai[i];
}
cout<
cout<<"Hasil Pengaksesan Elemen Array Lewat";
cout<<"Pointer";
cout<
for(i=1;i<=5;i++)
{
cout<<"Elemen "< cout<<", Menempati Alamat Memori = ";
cout<<&ptrnilai[i];
cout<
}
getche( );
}
//Penggunaan Pointer to Array //
//------------------------------//
#include
#include
#include
main( )
{
int i;
int nilai[5];
int *ptrnilai;
ptrnilai = nilai;
for(i=1;i<=5;i++)
{
cout<<"Masukan Nilai Pertama = ";
cin>>nilai[i];
}
cout<
cout<<"Pointer";
cout<
{
cout<<"Elemen "< cout<<", Menempati Alamat Memori = ";
cout<<&ptrnilai[i];
cout<
getche( );
}
F. Pointer
pada String
Pointer pada string dapat anda lihat pada contoh program berikut:
Contoh :
Pointer pada string dapat anda lihat pada contoh program berikut:
Contoh :
/*
------------------- */
/* Pointer pada String */
/* ------------------- */
#include
#include
main( )
{
char band_metal[ ] = "SEPULTURA";
char *band_punk = "RANCID";
cout<<"Nama Band Metal = "<
cout<<"Nama Band Punk = "<
band_punk+=3; //menambah nilai penunjuk / pointer
cout<<"Nama Band Metal = "<
cout<<"Nama Band Punk = "<
getche( );
}
/* Pointer pada String */
/* ------------------- */
#include
#include
main( )
{
char band_metal[ ] = "SEPULTURA";
char *band_punk = "RANCID";
cout<<"Nama Band Metal = "<
cout<<"Nama Band Metal = "<
}
Pada program
diatas, terdapat perubahan nilai pointer band_punk , yang di tunjukkan oleh
penambahan nilai pointer pada band_punk+=3, secara default, pembacaan dilakukan
mulai dari pointer pertama, karena sudah terjadi penambahan dengan 3, maka
pembacaan berpindah ke alamat ke.4, sehingga tercetak kata CID.



