Selasa, 26 Februari 2019

MATERI POINTER C++








Sesuatu fasilitas yang tersedia dalam C++ yang tidak ditemukan pada bahasa pemrogamanlainnya adalah pointer, dengan pemanfaatan pointer programmer dapat melakukan manipulasi memori secara langsung. Sebuah pointer menyediakan akses tidak langsung terhadap objek.Pada dasarnya manusia telah menggunakan pointer pada dunia nyata setiap saat.Sangat banyak contoh yang dapat kita lihat.Misalnya saja pada saat seorang dosen mengatakan, “Kerjakan Tugas 1.1 di buku,” telah terjadi penugasankepada mahasiswa secara tidak langsung.Contoh lainya adalah sebuah URL (Uniform Resource Locator), seperti http://www.sebarkan.comjuga merupakan sebuah pointer.URL tersebut memberitahukan lokasi halaman web tersebut.Jika halaman web pindah, makaURL tidak berlaku lagi dan menunjuk ke halaman yang sudah tidak ada.Oleh karena itu pengetahuan yang banyak tentang pointer akan sangat membantu bagi seseorang yang ingin mempelajari bahasa C/C++.

Pengertian Pointer
Pointer adalah variabel yang menunjuk pada variabel lainnya. Sebelumnya pernah dijelaskan mengenai variabel, menyatakan bahwa. Variabel merupakan sebuah memori perwakilan dari alamat memori pada komputer. Hal yang sebenarnya terjadi adalah pointer itu menyimpan alamat memori yang dia tunjuk. Pada pointer kita dimungkinkan untuk menunjuk suatu memori, mengubah nilai dan menyalin nilai memori tersebut secara tidak langsung (perantara melalui variabel pointer).Sebelum kita mempelajari pointer, ada dua hal yang perlu anda ketahui. Dalam pointer terdapat dua macam operator yang akan kita gunakan, yaitu Address-of (&) dan Dereference operator (*).
Fungsi Pointer
1.                 Kegunaan pointer yang utama adalah untuk menyimpan alamat memori dari sebuah variabel (data type atau object dari class). Selain menyimpan alamat dari variabel, pointer juga dapat digunakan untuk menyimpan alamat dari sebuah fungsi (function pointer).
2.      Function pointer telah digunakan sejak dikenalkannya bahasa C,dan banyak digunakan untuk sebuah fungsi callback atau untuk meningkatkan readability dari sebuah code.
3.      Anda dapat memperlakukan function pointer seperti pointer biasa (pointer ke datatype/object), anda dapat menyimpan,mengirimkan, merubah address, atau meng-evaluasi address dari pointer ke fungsi ini dengan sifat tambahan anda dapat memanggil fungsi yang ditunjuk oleh function pointer. Pointer  juga berguna untuk :
4.      Mengirimkan  “Parameter  yang  berupa  variabel”  ke  dalam  fungsi,  artinya  nilai variabel bisa diubah di dalam fungsi.
5.      Untuk membuat variabel DINAMIS (Bukan variabel Statis) penggunaan function pointer pada C++ dibatasi, yaitu function pointer tidak boleh menunjuk pada function yang berada dalam sebuah class (class member function) kecuali function tersebut berjenis static.
6.      Karena pointer dapat meningkatkan kinerja untuk operasi yang dilakukan secara berulang. Dengan syarat Kalau mendeklarasikan pointer kedalam array, tidak boleh menggunakan tanda bintang.
7.      Pointer juga di gunakan untuk mengalokasikan tempat pada memori secara dinamis yakni dapat diubah-ubah alokasi tempatnnya pada memori data yang dimasukkan sebagai nilai pointer akan selalu tersimpan sehingga diperlukan penghapusan yang tujuannya   untuk   mengosongkan   memori,   perintah   yang   digunakan   untuk menghapus memori adalah delete [] nama variable.
Macam – macam pointer
1.     Operator Dereference (&)

                Operator Dereference (&) yaitu operator yang berfungsi mendeklarasikan sebuah variabel didalam penggantian memori. operator ini biasa disebut dengan "address of". Jadi seandainya sobat ingin mengetahui dimana variabel akan disimpan (untuk mengetahui letak / alamat penyimpanan variabel di memori), sobat dapat memberikan tanda "&" (ampersand sign) didepan variabel, yang berarti "address of". Karena dengan menggunakan operator dereference (&) ini, sebuah variabel akan menghasilkan alamat lokasi penyimpanannya di memori. Sebagai contoh "int angka" ditempatkan pada memori dengan alamat 0x6ffe34 untuk mengetahuinya sobat dapat menuliskan code seperti ini 
  

cout<<"\nAlamat variabel angka (&angka) : "<<&angka; berikut code lengkapnya:
                                                                                                                                                                                                                                                                                                                                                                                                                  

















                                                                                                                                          


2. Operator Reference (*)
Seandainya pada operator Dereference (&) sobat dapat mengeluarkan alamat memory dari sebuah variabel, sedangkan pada Operator Reference (*) sobat dapat mengeluarkan (menampilkan) nilai dari alamat memori yang di tunjuk. untuk penggunaan nya sendiri sobat dapat menambahkan identifier asterisk (*) didepan variabel. biasanya Operator reference disebut dengan "value pointed by"

Dari contoh program diatas, nilai *angkax adalah "90", hal tersebut karena pointer angkax menjunjuk ke variabel angka sehingga apabila kita menuliskan code cout<<"\nNilai yang ditunjuk pointer *angkax : "<<*angkax; maka akan keluar angka 90 karena kita mengeluarkan nilai dari alamat memori yang ditunjuk oleh pointer angkax (nilai / value yang berada di alamat memori 0x6ffe34).untuk lebih memahami materi Pointer pada C++ ini, khususnya dalam penggunaan Operator Dereference (&) dan Operator Reference (*), kita akan membahas satu lagi contoh program pointer lengkap dengan penjelasannya.


 


3. Pointer dan Array (pointer to array)
         Hubungan antara pointer dan array  pada C sangatlah erat. Sebab sesungguhnya array secara internal akan diterjemahkan dalam bentuk pointer. Pembahasan berikut akan memberikan gambaran hubungan antara pointer dan array. Misalnya dideklarasikan di dalam suatu fungsi 

      static int tgl_lahir[3] = { 01, 09, 64 }; 
      
      dan 

      int *ptgl; 
      Kemudian diberikan instruksi 

      ptgl = &tgl_lahir[0]; //pointer to array of integer

      maka ptgl akan berisi alamat dari elemen array tgl_lahir yang berindeks nol. Instruksi di atas bisa juga ditulis menjadi 

      ptgl = tgl_lahir; 
     
      sebab nama array tanpa tanda kurung menyatakan alamat awal dari array. Sesudah penugasan seperti di atas, 
      
      *ptgl 
      
      dengan sendirinya menyatakan elemen pertama (berindeks sama dengan nol) dari array tgl_lahir.  Hal ini bisa dilihat melalui pembuktian program berikut.







4. Pointer Sebagai Parameter Fungsi

a. Penerapan pointer sebagai parameter yaitu jika diinginkan agar nilai suatu variabel internal dapat        diubah oleh fungsi yang dipanggil.  
b. Sebagai contoh dapat dilihat pada fungsi berikut.


c. Fungsi di atas dimaksudkan agar kalau dipanggil, variabel yang berkenaan dengan parameter              aktual dapat diubah nilainya, masing-masing dinaikkan sebesar 2. Contoh pemanggilan : 


d. Perhatikan, dalam hal ini variabel a dan b harus ditulis diawali operator alamat (&) yang berarti          menyatakan alamat variabel, sebab parameter fungsi dalam pendefinisian berupa pointer. 


Referensi


http://yuliana.lecturer.pens.ac.id/Konsep%20Pemrograman/Teori/T12-Pointer(1).pdf
https://www.belajarcpp.com/tutorial/cpp/pointer/
http://www.materidosen.com/2016/11/pointer-pada-c-lengkap-contoh-program.html



                           
















      



Tidak ada komentar:

Posting Komentar

Modul Debian 2