6.2 POINTER
Poiter adalah variable yang berisi alamat memori variable lain dan sevara tidak langsung menunjuk ke variable tersebut.
Analoginya – sebagai contoh – Andi berteman dengan Budi, lalu anda ingin mengetahui jumlah keluarga Budi untuk keperluan sensus penduduk. Anda tidak mengetahui alamat Budi, tetapi anda mengenal Andi. Untuk mencari jumlah keluarga Budi, maka pertama-tama anda pergi kerumah Andi, misalnya dirumah no 8321. Sesampai di Andi, Andi membaritahukan kepada anda bahwa alamat Budi ada pada alamat 9821. Kemudian anda pergi ke rumah Budi lalu mencatat jumlah keluarga yang dimiliki Budi yaitu lima orang ( misalkan ).
Dalam contoh diatas, Andi bertindak sebagai pointer. Andi tidak memberitahukan jumlah keluarga Budi, tetapi Andi memberitahu alamat Budi, di alamat 9821 ( alamat Budi ) itulah anda mengetahui jumlah keluarga Budi.
Jika alamat dari ditunjukkan dengan simbol & dan isi dari ditunjukkan dengan symbol *, maka hubungan analogi diatas adalah:
Nama
|
Alamat
|
Isi
|
Andi
|
8321
|
9821 = &Budi
|
Budi
|
9821
|
5 = *(&Budi)
|
Dalam bentuk pointer, ditulis :
Andi = &Budi; // baris 1
Budi = *(&Budi); // baris 2
Subtitusi pernyataan di baris 2 :
Andi = *Andi;
Contoh program yang menggambarkan hal tersebut :
#include <iostream.h>
void main()
{
int *Andi; // Andi sebagai pointer
int *Andi; // Andi sebagai pointer
int Budi = 5; // Budi bukan pointer, prhatikan perbedaan pada *
Andi = &Budi // Isi dari Andi yaitu alamat Budi
cout<<”Isi alamat memori Andi : “<<Andi<<endl;
cout<<”Isi alamat memori Budi : “<<Budi<<endl;
cout<<”Isi alamat memori Budi : “<<*Andi<<endl;
cout<<”Alamat memori Andi : “<<&Andi<<endl;
cout<<”Alamat memori Budi :”<<&Budi<<endl;
}
Keluarannya :
Isi alamat memori Andi : 0x6da72448
Isi alamat memori Budi : 5
Isi alamat memori Budi : 5
Alamat memori Andi : 0x6da7244a
Alamat memori Budi : 0x6da72448
Penjelasan :
Isi alamat memori Andi adalah alamat memori Budi, yaitu 0x6da72448
( alamat ini berbeda-beda tergantung dari komputernya dan ditulis dalam bentuk hexadesimal).
Sedangkan isi alamat memori Budi adalah 5. Cara mengakses isi dari alamat Budi ada dua cara, yaitu mengakses variabel Budi dan mengakses isi dari pointer Andi (*Andi). *Andi dapat juga disebut “isi dari alamat memori yang ditunjuk oleh Andi”. Karena alamat memori yang ditunjuk oleh Andi adalah alamat memori Budi, maka dapat dikatakan “isi dari alamat memori Budi”.
Tidak ada komentar:
Posting Komentar