A. Pengertian
Pointer
Pointer (
variabel petunjuk) adalah suatu variabel
yang berisi alamat memori dari suatu variabel lain. Pointer merupakan variabel
level rendah yang dapat digunakan untuk menunjuk nilai integer, character, float,
double, atau single, dan bahkan tipe-tipe data lain yang didukung oleh bahasa C.
Variabel
biasa, sifatnya statis dan sudah pasti, sedangkan pada pointer sifatnya
dinamis dan dapat lebih fleksibel.
Variabel pointer yang tidak menunjuk pada nilai apapun berarti memiliki nilai NULL,
dan disebut sebagai dangling pointer karena nilainya tidak diinisialisasi dan
tidak dapat diprediksi.
B. Deklarasi Pointer
Seperti
halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih
dahulu sebelum digunakan.
Bentuk Umum : Tipe_data *nama_pointer;
Contoh : int *angka;
Char *p;
Pendeklarasian
variabel pointer menggunakan tanda * sebelum nama variabelnya, sedangkan untuk
menampilkan nilai yang ditunjuk oleh suatu variabel pointer, juga digunakan
operator * (tanda asterisk). Jika untuk menampilkan alamat tempat penyimpanan
nilai yang ditunjuk oleh suatu variabel pointer, digunakan operator &
(tanda ampersand).
C. Pass by Reference & pass by Value
Pass by value, jika di dalam fungsi atau
prosedur dilakukan perubahan nilai parameter yang dilewatkan secara nilai, maka
nilai parameter yang sebenarnya tidak ikut berubah hal ini dikarenakan
parameter yang dilewatkan secara nilai akan di copy sebagai nilai lokal di
prosedur atau fungsi yang bersangkutan.
Contoh :
Pass by reference, jika di dalam prosedur atau
fungsi dilakukan perubahan nilai parameter yang dilewatkan secara reference,
maka nilai parameter yang sebenarnya juga akan berubah.
Contoh :
Terlihat
perbedaan antara Pass
by Reference & pass by Value, Fungsi pass by value mendeklarasikan
parameter inputan yang berupa variabel, sedangkan fungsi pass by reference
mendeklarasikan parameter inputan yang berupa pointer. Dalam pemanggilan
fungsi, fungsi dengan pass by value cukup menginputkan nama variabel (h dan u)
pada parameter inputnya. Namun untuk memanggil fungsi pass by reference kita
harus menyertakan tanda & di depan nama variabel, karena parameternya
berupa variabel pointer.
Kenapa
fungsi pass by reference setelah fungsinya dipanggil dan dijalankan maka nilai
variabel yang diinputkan (h dan u) juga ikut berubah mengikuti nilai yang
berada dalam fungsi, karena parameternya berupa pointer sehingga yang
diinputkan berupa alamat memori maka secara otomatis alamat memori h = a dan
alamat memori u = b.
D.
Double Pointer
Suatu pointer bisa saja menunjuk ke pointer lain.
Gambar berikut memberikan contoh mengenai pointer menunjuk pointer.
Agar
A menunjuk ke variabel x, perintah yang diperlukan berupa : A = &x; ( Artinya A diberi nilai
berupa alamat dari variabel x. setelah pernyataan tersebut di eksekusi barulah
dapat dikatakan bahwa A menunjuk ke variabel x. )
Sedangkan
B menunjuk ke A, instruksi yang diperlukan adalah : B = &A;
Contoh
:
E. Mengakses dan Mengubah isi suatu Variabel
Pointer
Contoh memberikan gambaran tentang
pengubahan isi suatu variabel secara tak langsung (yaitu melalu pointer).
Pada
listing tersebut pertama-tama mencetak nilai a terlebih dahulu lalu kemudian pd
menunjuk ke variabel a. Pada *pd += 5 merupakan instruksi mengubah nilai
variabel a secara tak langsung. Arti dari listing tersebut “jumlahkan yang
ditunjuk pd dengan 5 kemudian berikan ke yang ditunjuk oleh pd”, atau identik
dengan pernyataan a = a + 5;
Tidak ada komentar:
Posting Komentar