POINTER
Pointer merupskan Suatu variabel yang berisi alamat memori sebagai nilainya dan 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++):
#include <iostream.h>
#include <conio.h>
void main ()
{
int v = 7, *ptr;
ptr = &v;
Maka Hasilnya adalah
Perbedaan Variable 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
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);
int *nilai;
int data = 10;
alamat = &data;
printf (“%d”, alamat);
Dereferencing Pointer
Adalah mengambil nilai yang ditunjuk oleh sebuah variabel pointer .
Operasi Pointer
1. Operasi Penugasan
Contoh:
y = 65;
x1 = &y;
X2 = x1;
2. 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
3. Operasi Logika
Atau disebut operasi perbandingan. Pointer dapat dibandingkan dengan menggunakan operator hubungan, seperti !=, ==, <, dan >.
Contoh:
Array secara internal akan diterjemahkan dalam bentuk pointer.
Deklarasi variabel:
Kemudian diberi instruksi:
maka ptgl akan berisi alamat dari elemen array tgl_lahir yang berindeks nol.
Instruksi di atas bisa juga ditulis menjadi:
Nama array tanpa tanda kurung menyatakan alamat awal dari array.
Contoh dalam bahasa 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).