DISUSUN OLEH
1. Fitra Jelita
2. Aldi Nurzahpura
3. Hendi Susanto
4611414006
4611414028
4611414043
2015
menunjuk dan menyimpan alamat memori. Dalam penulisan pointer biasa digambar
dengan panah, sedangkan bagian memori yang ditunjuk digambar dengan kotak, dan
isinya ditulis di dalam kotak.
Karena itu biasa dikatakan bahwa sebenarnya pointer bukan berisi data,
melainkan berisi alamat dari suatu data. Ilustrasi untuk pointer adalah seperti gambar
berikut :
Pembahasan :
R adalah pointer yang menunjuk record Dewi, V adalah pointer ke record Dita.
Pointer juga bersifat fleksibel, misalnya dua pointer dapat menunjuk pada record yang
sama, seperti T dan U yang menunjuk record Dedek, namun juga dapat tidak menunjuk
ke suatu record apapun (nil), seperti pointer S. Dari sifat pointer yang fleksibel, kita
juga harus berhati-hati dalam memindahkan arah pointer, jangan sampai ada record
yang hilang. Record Diah merupakan record yang hilang, tanpa ada pointer yang
menunjuk.
NIL
2.
FungsiPtr
3.
Operator @
4.
5.
writeln(p^);
p^:=100;
writeln(p^);
writeln(nilai);
readln;
end.
Pembahasan :
Pada contoh program deklarasi ini, pertama-tama dideklarasikan variable p
sebagai pointer yang bertipe integer. Dibuat sebuah variable lagi yang diberi nama
nilai dan bertipe integer.
Variabel nilai diisi dengan nilai 12. Kemudian variabel p menunjuk alamat dari
variable nilai dengan operator @, sehingga variabel p berisi nilai 12, dan ditampilkan
outputnya di layar. Kemudian variabel p diberi nilai 100, dan secara otomatis variable
nilai juga bernilai 100 karena sudah ditunjuk oleh variabel p. Kemudian isi dari variabel
p yang baru dan variable nilai ditampilkan di layar.
C. Fungsi Pointer
1. Meningkatkan kinerja untuk operasi yang dilakukan secara berulang, karena
variabel pointer bersifat dinamis (dapat diubah ubah lokasi penyimpannya dalam
memory).
2. Pada variable biasa kita tidak perlu tahu alamat memory dari variable tersebut.
Untuk mengakses hanya perlu nama variable tersebut. Tapi untuk struktur data
dinamis (linked list, tree dsb) hal tersebut tidak bisa.
3. Penggunaan pointer yang tepat dapat mempercepat sebuah proses secara signifikan.
4. Pemindahan data yang besar dari sebuah variabel.
D. Operator Pointer
Operator Pointer ada dua, yaitu :
5
a. 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
dari
variable andy. Karena variabel andy diberi awalan karakter ampersand (&), maka yang
menjadi
pokok
disini
adalah
alamat
dalam
memory, bukan
isi
variable.
b. Operator *
Operator * merupakan operator reference. Dengan menggunakan pointer, kita
dapat mengakses nilai yang tersimpan secara langsung dengan memberikan awalan
operatorasterisk (*) 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
25;.
Kedua,
alamat
dari
variabel
andy.
Ketiga
bernilai
benar
karena assignation untuk ted adalah ted = &andy;. Keempat menggunakan reference
6
operator (*) yang berarti nilai yang ada pada alamat yang ditunjuk olehted, yaitu 25.
Maka ekspresi dibawah ini pun akan bernilai benar :
*ted = andy;
E. Operasi Pointer
Operasi pointer ada 3 yaitu :
A.
OperasiPenugasan
Nilai dari suatu variabel pointer dapat disalin ke variabel pointer yang lain.
Contoh:
y = 65;
x1 = &y;
X2 = x1;
B.
Operasi Aritmatika
Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai
integer saja.
Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya
(index selanjutnya) dalam memori.
Hanya 4 operator aritmatika dapat digunakan pada pointer, yaitu ++, ==, +, dan
-.
Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan.
Contoh:
{
inti[4], *i_Ptr;
int x;
i_Ptr = i;
for (x = 0; x<4; x++)
cout<<i_Ptr+x<<\n;
return 0;
7
}
Apabila program di atas di jalankan, maka akan muncul:
0xeffffd9c
0xeffffda0
0xeffffda4
0xeffffda8
C.
F. Manipulasi Memori
Manipulasi memori lewat Pointer bertipe
useswincrt;
varp,q,r,s:^string;
nilai:string;
begin clrscr;
nilai:='ini string nilai!!!';
p:=@nilai;
new(q);
q^:='ini isi pointer q!!!';
r:=q;
s^:=q^;
8
Alamat pointer s=
0: