Cari Blog Ini

Selasa, 26 Februari 2019

POINTER C++


POINTER

A. Pengertian Pointer
       Pointer adalah penunjuk suatu variabel. Karena menunjuk suatu variabel, maka pointer wajib memiliki alamat dari variabel yang ditunjuknya. Kadangkala dalam program yang besar, penghematan memori wajib untuk dilakukan. Dengan mekanisme copy dan paste nilai variabel satu kedalam variabel lain, akan sangat memboroskan memori. Dengan mekanisme pointer, suatu variabel dalam suatu fungsi dapat diakses oleh fungsi yang lain. Sebenarnya pointer hanyalah sebuah variabel biasa yang tidak biasa. Bedanya, jika variabel biasa menyimpan sebuah nilai, pointer menyimpan address. Apa itu address ? Sebenarnya CPU tidak mengenal huruf, atau nama. Komputer hanya menyimpan sebuah nilai dalam bentuk yang kita sebut address yang biasanya berbentuk heksadesimal. Sebenarnya bisa mengetahui letak address suatu variabel.
 

Variabel yang merupakan pointer ke pointer harus dinyatakan seperti itu. Ini dilakukan dengan menempatkan tanda bintang tambahan di depan namanya. Sebagai contoh, berikut ini adalah deklarasi untuk mendeklarasikan pointer ke pointer bertipe integer.
B. Fungsi Pointer
       Ada beberapa cara untuk memindahkan data atau mentransfer data dari satu fungsi ke fungsi lain. Tentu cara paling sederhana adalah dengan memindahkan data itu sendiri sebagaimana biasanya. Namun ada saatnya cara ini tidak efisien apabila jumlah data yang dipindahkan sangat besar sehingga memakan memory double. Disinilah gunanya pointer, daripada memindahkan datanya lebih baik hanya mengirim address nya saja sehingga fungsi lain tersebut dapat merujuk ke address tersebut untuk mendapatkan nilai datanya. Fungsi lain dari Pointer Biasanya fungsi hanya dibekali kemampuan  untuk memakainya saja . Bagaimana jika fungsi tersebut ingin diberi kemampuan untuk mengubah nilai data yang melewatinya ? Pakai pointer.
Pendeklarasian pointer :
Contoh Program dan hasil running nya  
 
 


C. Alamat Dari Variabel Pointer

     Misalkan memiliki variabel x dan terletak di memori 0x000001. Jika ingin memasukkan nilai 100 kedalam variabel x, maka processor harus membawa nilai 100 tersebut kedalam variabel x yang terletak di alamat memori 0x000001. Hal yang perlu duketahui adalah, setiap variabel ternyata memiliki ukuran byte yang berbeda-beda dalam memori. Contoh suatu variabel bertipe int memiliki ukuran 4 byte dalam memori. Maka variabel tersebut akan menempati 4 kapling lokasi dalam memori, misalkan 0x000001, 0x000002, 0x000003, dan 0x000004. Jika terdapat dua buah variabel bertipe integer yang bersebelahan, maka alamat variabel pertama terletak di 0x000001 dan variabel kedua terletak dialamat 0x000005.
       Memori menggunakan bilangan heksadesimal yang ditandai dengan awalan ‘0x’, sehingga jika suatu variabel menempati blok kesepuluh dalam memori, maka alamatnya adalah 0x00000a.

D. Pointer Sebagai Parameter Suatu Fungsi
     Seperti halnya dengan array, pointer dapat digunakan sebagai parameter suatu fungsi. Karena sifat pointer yang hanya sebagai penunjuk, maka setiap perubahan yang terjadi pada parameter, sebenarnya terjadi pada variabel yang ditunjuk bukan pada variabel pointer. Contoh program dan hasil running nya sebagai berikut. 
 
 

Pada Program diatas. Saya membuat fungsi tambah, dimana ketika alama suatu variabel diberikan sebagai parameter fungsi, nilai 20 akan ditambahkan pada alamat tersebut. Perbedaan parameter berupa pointer dan non-pointer adalah, pada variabel non-pointer, ketika ingin memasukkan nilai pada sebuah variabel kedalam parameter, kamu harus memasukkan nilai dari variabel tersebut. Untuk parameter berupa pointer, kamu cukup memasukkan alamat variabel yang menampung nilai dengan operator (&) kedalam parameter fungsi.

E. Pointer dan Array
       Jika menuliskan sebuah array tanpa tanda kurung kotak ([]) maupun indeksnya, maka array tersebut menunjuk atau berisi alamat elemen pertama dari array tersebut. Contohnya jika ingin membuat sebuah pointer bertipe integer dengan nama pointerArray dan sebuah array dengan tipe yang sama yaitu int dengan nama nilaiArray, maka pemberian nilai berikut sah dan dapat dilakukan:
 
Dari sintaks di atas, variabel pointer dengan nama pointrArray sekarang menunjuk pada alamat memori elemen pertama array dengan nama nilaiArray. Nah secara tidak langsung kita dapat mengakses nilai elemen array dengan menggunakan variabel pointer. Contoh Program dan hasil running nya:
 
 

F. Reference (*) dan Deference (&)
Reference (*) merupakan suatu operator yang berfungsi menyatakan suatu variabel adalah variabel pointer. Sama halnya dengan operator deference, peletakan simbol operator reference diletakan diawal variabel. Operator reference ini akan membuat suatu variabel pointer untuk menampung alamat. Sedangkan Deference (&) adalah merupakan suatu operator yang berfungsi untuk menanyakan alamat dari suatu variabel. Apabila ingin memberikan simbol & pada awal variabel dan mencetak hasilnya pada jendela CLI, maka yang akan tercetak adalah alamat dari variabel tersebut bukan nilai yang ditampung oleh variabel tersebut.


DAFTAR PUSTAKA

sinauarduino. (2016, April 27). pointer pada pemrograman C++. Retrieved from Sinauarduino: https://www.sinauarduino.com/artikel/pointer-pada-pemrograman-cpp/

RIDHO RAMADHAN
1801301095
TERIMAKASIH!