Pointer (Penunjuk) Modul 6 Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di dalam memori. Contoh: jika variabel A berisi alamat dari variabel B, maka variabel A dikatakan menunjuk ke variabel B. Operator pointer ada 2 yaitu : 1. Operator & Operator & menghasilkan alamat dari operandnya atau alamat memori yg ditempati oleh variabel. 2. Operator * Operator * menghasilkan nilai yang berada pada sebuah alamat. Perbedaan antara variabel biasa dengan variabel pointer yaitu :
Pointer
Variabel biasa
Deklarasi variabel
int *a;
int b;
Alamat memori
Tidak otomatis
Otomatis
Mengetahui alamat memori
A
&b
Mengetahui datanya
*a
b
Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum digunakan. Bentuk Umum pendeklaraian variabel pointer : Tipe_data *nama_pointer; Contoh : int *nilai; char *huruf;
Ada dua cara yang dapat dilakukan untuk alokasi space di memori bagi pointer, yaitu: 1. Menempati space variable lain yang sudah punya space. Variabel lain tersebut dapat berupa variabel biasa (bukan pointer) atau pointer yang tentunya sudah punya alokasi space di memori. Syntaxnya : var_pointer = &var_biasa;
1 Modul Pemrograman Terstruktur STMIK AMIKOM Yogyakarta Yuli Astuti, S.Kom
Contoh 6.1 : #include
#include main() { int x,*y; char *judul="PENGGUNAAN POINTER"; y=&x; x=5; cout<<judul<<endl; cout<<"Nilai x = "<<x;//5 cout<<"\nAlamat memori x = "<<&x; cout<<"\n\nNilai y = "<<*y;//5 cout<<"\nAlamat memori y = "<<*y;//5 getch();} Keterangan : Karena *y menempati alokasi memori yang sama dengan x, akibatnya data yang tersimpan di dalamnyapun akan sama. Jika ada instruksi yang menginisialisasi x, otomatis juga akan menginisialisasi *y.
Contoh 6.2 : #include #include main() { int x,*y; y=&x; x=5; *y=10; cout<<"Nilai x = "<<x;//5 cout<<"\nAlamat memori x = "<<&x; cout<<"\n\nNilai y = "<<*y;//10 cout<<"\nAlamat memori y = "<
Contoh 6.3 : #include #include main (){ int n1,n2; int *p; p=&n1; *p=10; p=&n2; *p=20; cout<<"Nilai n1 = "<
p = "<<*p;
getch();}
2. Dialokasikan tersendiri di memori (Memori dinamis). Pointer tidak menempati space variabel lain, tetapi dialokasikan space tersendiri di memori dengan instruksi new. Syntaxnya : var_pointer = new tipe_data-pointernya; Contoh : int *a; float *x; a=new int; x=new float; Contoh 6.4 : #include #include main() { int x,*y; y=new int; x=5; *y=10; cout<<"Nilai x = "<<x;//5 cout<<"\nAlamat memori x = "<<&x; cout<<"\n\nNilai y = "<<*y;//10 3 Modul Pemrograman Terstruktur STMIK AMIKOM Yogyakarta cout<<"\nAlamat memori y = "<
getch();}
Keterangan : x dan y mempunyai alokasi memori yang berbeda, sehingga data yang tersimpan di dalamnyapun akan berbeda pula. Dengan alokasi memori dinamis ini kita dapat menghemat alokasi memori dengan cara membebaskan memori dari variabel dinamin, jika memang variabel tersebut tidak digunakan lagi. Cara membebaskan memori dari variabel dinamis yaitu : Syntax : delete var_pointer;
Contoh 6.5 : #include #include main() { int x,*y;
y=new int;
x=5;
*y=10;
cout<<"Nilai x = "<<x; cout<<"\nAlamat memori x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori y = "<