Pointer adalah obyek bahasa
pemrograman yang nilainya mengacu pada (atau menunjuk ke) nilai lain yang
disimpan di dalam memori komputer menggunakan alamatnya. Sebuah pointer mereferensikan
suatu lokasi di dalam memori, dan memperoleh nilai yang tersimpan yang dikenal
sebagai dereferencing pointer. Sebagai analogi, sebuah nomor halaman
dalam indeks buku dapat dianggap sebagai sebuah pointer ke halaman yang
bersangkutan. Derefencing pointer tersebut akan dilakukan dengan membalik ke
halaman dengan nomor halaman yang diberikan.
ATAU
- Pointer adalah suatu variabel penunjuk, berisi nilai yang menunjuk alamat suatu lokasi memori tertentu.
- Jadi pointer tidak berisi nilai data, melainkan berisi suatu alamat memori atau null jika tidak berisi data.
- Pointer yang tidak diinisialisasi disebut dangling pointer
- Lokasi memori tersebut bisa diwakili sebuah variabel atau dapat juga berupa nilai alamat memori secara langsung.
ILUSTRASI
- Kita memiliki variabel X yang berisi nilai karakter ‘a’
- Oleh kompiler C, nilai ‘a’ ini akan disimpan di suatu alamat tertentu di memori.
- Alamat variabel X dapat diakses dengan menggunakan statemen &X.
- Jika kita ingin menyimpan alamat dari variabel X ini, kita dapat menggunakan suatu variabel
} misalnya char alamat_x = &X;
- alamat_x adalah suatu variabel yang berisi alamat dimana nilai X, yaitu ‘a’ disimpan.
- Variabel alamat_x disebut variabel pointer atau sering disebut pointer saja.
Perbedaan Variabel Biasa dan Pointer
Variabel Biasa
|
Pointer
|
Berisi data/nilai
|
Berisi alamat memori
dari suatu variabel tertentu
|
Operasi yang bisa
dilakukan seperti layaknya operasi aritmatika biasa: +, -, *, /
|
Membutuhkan operator
khusus: “&” yang menunjuk alamat dari suatu variabel tertentu. Operator “&”
hanya dapat dilakukan pada variabel dan akan menghasilkan alamat dari
variabel tersebut.
Contoh: p = &n
Yang kedua: operator “*”.
Operator ini menggunakan nilai dari alamat variabel yang ditunjuk oleh
pointer tersebut.
Contoh: int *p;
|
Bersifat statis (tidak
dapat diubah)
|
Bersifat dinamis (dapat
diubah)
|
Deklarasi: int a;
|
Deklarasi int *a
|
Manfaat Pointer
- Dapat mengirimkan “Parameter yang berupa variabel” ke dalam fungsi, artinya nilai variabel bisa diubah di dalam fungsi.
- Penggunaan pointer dapat meningkatkan kinerja untuk operasi yang dilakukan secara berulang seperti tranversing string, lookup table, control table, dan tree structures.
- Lebih cepat dan tidak membutuhkan banyak memori untuk menyalin alamat memori(dereference) pointer daripada menyalin dan mengakses data menggunakan variabel biasa (pointers point).
- Digunakan untuk menyimpan alamat dari titik masuk untuk memanggil subrutin dalam pemrograman prosedural dan untuk run-time penghubung ke dynamic link libraries (DLL). Dalam pemrograman berorientasi objek, pointer ke fungsi yang digunakan untuk mengikat/menjilid method, ini sering disebut tabel method virtual.
1.
& (ampersand)
2.
* (asterisk)
- Operasi Penugasan
- Operasi Aritmatika
- Operasi Logika
Passing Argument by Reference
·
Pointer
digunakan untuk mengakses variabel dengan menggunakan referensi atau alamat.
·
Akses ini memungkinkan
terjadinya perubahan data pada variabel referensi.
Passing
Argument by Value
·
Pointer
digunakan untuk mengakses variabel berdasarkan nilainya.
·
Ketika nilai
pada variable yang dirujuk berubah, nilai pada variable rujukan tidak berubah.
0 comments:
Post a Comment