Rabu, 06 Januari 2016

Pointer

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