Anda di halaman 1dari 29

POINTER

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:

Nilai v = 7 dan *ptr = 7


Alamatnya = efffb24
PERBEDAAN VARIABEL DAN POINTER
FUNGSI POINTER
Meningkatkan kinerja untuk operasi yang
dilakukan secara berulang, karena variabel pointer
bersifat dinamis (dapat diubah-ubah lokasi
penyimpannya dalam memory).
Pada variabel biasa kita tidak perlu tahu alamat
memory dari variabel tersebut. Untuk mengakses
hanya perlu nama variabel tersebut. Tapi untuk
struktur data dinamis (linked list, tree dsb) hal
tersebut tidak bisa.
Penggunaan pointer yang tepat dapat mempercepat
sebuah proses secara signifikan.
Pemindahan data yang besar dari sebuah variabel.
OPERATOR ALAMAT
• Setiap variabel yang dideklarasikan,
disimpan dalam sebuah lokasi memori dan
pengguna biasanya tidak mengetahui di
alamat mana data tersebut disimpan.
• Dilambangkan dengan simbol “&”.
Contoh:
int y = 5;
int *yPtr;

Maka pernyataan:
yPtr = &y

Ini berarti bahwa alamat dari variabel y ditunjukkan


kepada variabel pointer yPtr.
OPERATOR REFERENCE
• Penggunaan operator ini, berarti
mengakses nilai sebuah alamat yang
ditunjuk oleh variabel pointer
DEKLARASI VARIABEL POINTER

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;

Nama array tanpa tanda kurung menyatakan


alamat awal dari array.
Contoh dalam program C++
#include <stdio.h>
main()
{
static int tgl_lahir[] = {16, 4, 1974};
int i, *ptgl;
ptgl = tgl_lahir;
printf("Nilai yang ditunjuk ptgl = %d\n", *ptgl);
for (i=0; i<3; i++)
printf("Nilai tgl_lahir[i] = %d\n", *ptgl++);
}
POINTER DAN STRING
• Pointer juga dapat digunakan untuk mendeklarasikan
variabel string.
• „Contoh:
 char *pkota = “SEMARANG”;
 Hampir sama dengan:
 char kota[] = “SEMARANG”;
 Tetapi sebenarnya tidak tepat sama.
 pkota adalah pointer (menyatakan alamat) yang menunjuk
 ke string “SEMARANG”, kota adalah array (array
 menyatakan alamat yang konstan, tak dapat diubah).

Anda mungkin juga menyukai