POINTER MERUPAKAN
SEBUAH VARIABEL BIASA
YANG TIDAK BIASA……
MENGAPA????
PENGERTIAN
• Suatu variabel yang berisi alamat memori sebagai
nilainya.
• Merupakan variabel level rendah yang dapat
digunakan untuk menunjuk nilai integer,
character, float, double, atau single dan tipe-tipe
data lain yang didukung oleh bahasa
pemrograman.
• Bersifat dinamis dan lebih fleksibel.
• Variabel pointer yang tidak menunjuk pada nilai
apapun berarti memiliki nilai NULL, disebut
sebagai dangling pointer karena nilainya tidak
diinisialisasi dan tidak dapat diprediksi.
• Variabel pointer berisi alamat dari suatu obyek
lain.
• Sebagai contoh, px adalah variabel pointer dan x
adalah variabel yang ditunjuk oleh px. Kalau x
berada pada alamat memori (alamat awal) 100,
maka px akan berisi 100.
Misalnya:
• Apabila kita membuat program yang akan
menampilkan suatu nilai di dalam suatu
variabel tertentu dan menampilkan juga
alamat suatu pointer yang isinya sama
dengan yang ditunjuk oleh variabel tadi.
Maka dalam program kita tuliskan (C++):
{
int v = 7, *ptr;
ptr = &v;
cout << “Nilai v = << v << “ dan *ptr = “<< *p
<< “\n alamatnya = “<< p << ‘\n’;
}
Bila program di atas dijalankan, maka hasilnya
adalah:
Maka pernyataan:
yPtr = &y
Tipe * nama_pointer
Contoh:
• Char *data1
• Int *data2
Operasi variabel pointer dapat dikerjakan oleh variabel
pointer yang lain.
Contoh:
Nilai1 = 8
Ptr1 = &Nilai;
Ptr2 = Ptr1;
Maka Ptr1 dan Ptr menghasilkan alamat variabel nilai1 yang
sama.
int *alamat;
int nilai = 10;
alamat = &nilai;
printf (“%d”, *alamat);
DENGAN
int *nilai;
int data = 10;
alamat = &data;
printf (“%d”, alamat);
DEREFERENCING POINTER
Adalah mengambil nilai yang ditunjuk oleh
sebuah variabel pointer .
Untuk melakukan dereferencing pointer,
kita harus menggunakan simbol *. Bila p
adalah pointer, maka p* adalah nilai yang
ditunjuk oleh p.
Dalam delphi biasanya ditunjuk oleh
simbol ^
OPERASI POINTER
• Operasi Penugasan
• Operasi Aritmatika
• Operasi Logika
OPERASI PENUGASAN
• Nilai dari suatu variabel pointer dapat
disalin ke variabel pointer yang lain.
• Contoh:
y = 65;
x1 = &y;
X2 = x1;
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:
{
int i[4], *i_Ptr;
int x;
i_Ptr = i;
for (x = 0; x<4; x++)
cout << i_Ptr+x <<“\n”;
return 0;
}
Apabila program di atas di jalankan, maka akan
muncul:
0xeffffd9c
0xeffffda0
0xeffffda4
0xeffffda8
OPERASI LOGIKA
• Atau disebut operasi perbandingan.
• Pointer dapat dibandingkan dengan menggunakan
operator hubungan, seperti !=, ==, <, dan >.
• Contoh:
{
int num[4];
int *start, *end;
start = num;
end = &num[3];
while (start != end)
}
POINTER DAN ARRAY
Array secara internal akan diterjemahkan dalam bentuk
pointer.
• Deklarasi variabel:
int tgl_lahir[3] = { 01, 09, 64 };
int *ptgl;
• Kemudian diberi instruksi:
ptgl = &tgl_lahir[0];
maka ptgl akan berisi alamat dari elemen array tgl_lahir
yang berindeks nol.
Instruksi di atas bisa juga ditulis menjadi:
ptgl = tgl_lahir;