a. Pengertian pointer
Pointer
merupakan sebuah variabel yang berisi alamat dari variabel lain. Suatu pointer
dimaksudkan untuk menunjukkan ke suatu alamat memori sehingga alamat dari suatu
variabel dapat diketahui dengan mudah. Arti pointer dalam bahasa sehari-hari
adalah petunjuk atau bisa dibilang penentu atau poiter secara sederhana bisa
diartikan sebagai tipe data yang nilainya mengarah pada nilai yang terdapat
pada sebuah area memori (alamat memori). Namun, dalam bahasa C, pointer bisa
berfungsi sebagai variabel array berarti pointer sebagai oenunjuk elemen array
ke-0 dalam variabel C.
b. Cara membuat pointer
ada
dua cara yang dapat dilakukan untuk alokasi space
di memori bagi pointer yaitu:
1. Menempati space variabel lain yang sudah punya space
Variabel lain tersebut dapat berupa
variabel biasa (bukan pointer) atau pointer yang tentunya sudah punya alokasi space memori.
Sintaksnya:
var_pointer = &var_biasa;
Contohnya:
2. Di alokasikan tersendiri di memori
(memori dinamis)
Pointer tidak menempati space variabel lain, tetapi dialokasikan
space tersendiri di memori dengan
instruksi new.
Sintaksnya:
var_pointer = new
tipe_data-pointernya;
contohnya:
int *a;
float *x;
a=new int;
x=new float;
Contoh program:
Hasil running:
c. Operator pointer
Ada
2 operator pointer yang dikenal secara luas, yaitu operator ”&” dan
operator “*”.
1. Operator &
Operator
& merupakan operator alamat. Pada saat pendeklarasian variabel, user tidak diharuskan menentukan lokasi
sesungguhnya pada memori, hal ini akan dilakukan secara otomatis oleh compiler dan operating system pada saat runt-time.
Jika ingin mengetahui dimana suatu variabel akan disimpan, dapat dilakukan
dengan memberikan tanda ampersand
(&) didepan variabel, yang berarti “address
of”.
Contoh:
Misalkan variabel DATA_1 diletakkan
pada alamat memori 1770, kemudian dituliskan instruksi.
Sebagai berikut:
·
DATA_1
= 27; Variabel DATA_1 berisi data 27
·
DATA_2
= DATA_1; Variabel DATA_2 diberi isi seperti DATA_1 yaitu 27
·
DATA_3
= & DATA_1; Variabel DATA_3 berisi alamat memori DATA_1, yaitu 1770
2. Operator *
Operator * merupakan operator reference.
Dengan menggunakan pointer, kita dapat mengakses nilai yang tersimpan secara
langsung dengan memberikan awalan operator asterisk
(*) pada identifier pointer, yang
berarti “value pointed by”.
Contoh:
Melanjutkan
deklarasi sebelumnya, jika ada penulisan variabel berikut:
DATA_4 = *DATA_3
Dapat dikatakan bahwa DATA_4 sama
dengan nilai yang ditunjuk oleh DATA_3. DATA_3 berisi alamat memori 1770,
sementara memori 1770 menampung data bernilai 27. Jadi DATA_4 berisi nilai yang
berada pada alamat 1770, yaitu 27.
Contoh:
Hasil runnng:
d. Pointer dan array
Pada
array/larik, pointer hanya perlu menunjukkan alamat elemen pertama saja karena
alamat array dalam memori sudah disusun secara berurutan.
Contoh:
int a[] = {76, 67, 88, 98};
int *pa;
pa = a;
Pernyataan pa = a artinya pointer pa
meyimpan alamat array a, yang alamatnya diwakili alamat elemen pertama, yaitu
a[0]. Kita juga bisa mengganti perintah pa = a dengan pa = &a[0]. Untuk pembacaan
semua elemen array dengan pointer, bisa menggunakan perulangan seperti pada
penggalan program berikut.
Contoh:
Hasil running:
e. Pointer sebagai parameter fungsi
Parameter
pass by reference adalah pemrosesan
parameter di dalam sebuah fungsi dimana yang dimasukkan didalam prosedur adalah
tempat atau alamat dari variabel yang menjadi parameter sehingga dapat terjadi
perubahan nilai variabel yang menjadi parameter.
Contoh:
Hasil running:
Sumber: