Rabu, 06 Januari 2016

Pointer




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)

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) 

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheCwB4Ff_DY-5w8vLrCbjZxfyultlYMjirP5hD2WWIpBLIPiVp-8D6EborBl5PhccLyly1VBC0Wfj3ARGjvGHEBtY3ykHQ0AZOBJ8Q3zSML1CEntdjjjoPm4ur5oqLXVuVAk4PdW3-l5Bf/s400/Capture.PNG

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( );
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:

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCYsotkzMOhJKwz8cWvZ81DjOCuLvcCCxgMkBuNNugZeTWEvHsOVDgzz8ZFEuNruEWc_YA5Za4VurrxmVBjYvOqDyX4Ts5oU3s9aWXECsDprlR2F9Fy8-xhrNHS7p8PPU7MG94Dtpwksez/s400/Capture.PNG

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();
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( );
}  
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 :
char ilham;
char *raka;  //pointer ke variabel
char **amir;  //pointer pada pointer
ilham = '75';
raka = &ilham;
amir = &raka;  
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoyHUD_r5MVsacGbfKBXFKv12_ThQ1BjRVBrMW5BbZTxnNPG25tK1hzt7Gg6ZY35AeyictqxvIAoxWxNHYBonsAGYoqSFYOs6WHxJRznx3dXq0zH9a57yydZ_3mgo5X4lxAjlEIWYBEnBe/s400/Capture.PNG

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( );

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( );
}
F. Pointer pada String
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( );
}
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.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIAfKmlrXFk97udUYGWAFjAVDawQxG97ySMDHznRY2dP7v9l7vZkQ5RF0hQvvZdWm3sO_chLf2-BQLe0qMQKV7OjPUqaREQPCYS3hd5JKjxf6Emdgq3FHcXoJ33Ib1kjxtQ2lV6Zu08VvO/s320/Capture.PNG

Unknown

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.

0 komentar:

Posting Komentar

 

Copyright @ 2013 Fakih Komputer.