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!