POINTER PADA PEMROGRAMAN C++
A.
Pengertian Pointer
Pointer merupakan sebuah variabel yang berisi alamat dari
variabel lain. Suatu variabel dimaksudkan untuk menunjukkan ke suatu alamat
memori sehingga alamat dari suatu variabel dapat diketahui dengan mudah. Pointer adalah penunjuk suatu variabel.
Karena menunjuk suatu variabel, maka pointer wajib memiliki alamat dari
variabel yang ditunjuknya.
Adapun pengertian versi
lain yaitu pointer memiliki arti
dalam bahasa sehari – hari yaitu petunjuk atau bisa dibilang penentu atau pointer secara sederhana bisa diartikan
sebagai tipe data yang nilainya mengarah pada nilai yang terdapat pada sebuah
area memori (alamat memori). Pada pointer
memungkinkan untuk menunjuk suatu memori, mengubah nilai dan menyalin nilai
memori tersebut secara tidak langsung (perantara melalui variabel pointer).
Kadang kala 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 fungsi yang lain.
Ada dua cara yang dapat dilakukan untuk alokasi space di memori bagi pointer, yaitu:
1.
Menempati space
variabel lain yang sudah punya space.
Variabel lain tersebut dapat berupa variabel biasa
(bukan pointer) atau pointer yang tentunya sudah punya
alokasi space di memori.
Syntax
:
var_pointer =
& var_biasa;
|
Contoh
program :
Hasil
program :
2.
Dialokasikan
tersendiri di memori (memori dinamis)
Pointer tidak menempati space variabel lain, tetapi dialokasikan space tersendiri di memori dengan instruksi new.
Syntax
:
var_pointer = new tipe_data-pointer;
|
Contoh
program :
Hasil
program :
1.
Deference
(&)
Deference (&) merupakan suatu operator yang berfungsi untuk
menanyakan alamat dari suatu variabel. Apabila memberikan simbol “&” pada
awal variabel dan mencetak hasilnya maka yang akan tercetak adalah alamat dari
variabel tersebut bukan nilai yang ditampung oleh variavel tersebut.
Contoh
program :
Hasil program :
Alamat
variabel “a” pada setiap komputer akan berbeda - beda tergantung kompiler dalam
mengalokasikan memori untuk suatu variabel.
2.
Reference
(*)
Reference (*) merupakan suatu operator yang berfungsi
menyatakan suatu variabel adalah variabel pointer.
Sama halnya dengan operator deference,
peletakan simbol operator reference
diletakkan di awal variabel. Operator ini akan membuat suatu variabel pointer untuk menampung alamat.
Contoh
program :
Hasil
program :
Dari program diatas dapat disimpulkan bahwa nilai
variabel b sama dengan variabel a, walaupun variabel b tidak diberikan nilai
yang sama dengan variabel a. Hal ini sebab variabel pointer b menunjukkan alamat variabel a dan variabel pointer b dapat mengakses nilai yang
terkandung dalam alamat yang ditunjuknya.
Pada array, pointer hanya menunjukkan alamat elemen pertama sebab alamat array dalam memori sudah disusun secara
berurutan. Sebuah array apabila
dituliskan tanpa tanda kurung kotak ([ ]) maupun indeksnya, maka array tersebut menunjuk atau berisi
alamat elemen pertama dari array
tersebut. Misalkan membuat sebuah pointer
bertipe int dengan nama pointerarray dan sebuah array dengan tipe yang sama yaitu int
dengan nama nilaiarray, maka
pemberian nilai berikut sah.
Contoh program :
Dari variabel pointer
dengan nama pointerArray adalah
menunjukkan alamat memori elemen pertama array
dengan nama nilaiArray. Secara tidak
langsung, nilai elemen
Hasil program :
Dari hasil program dapat dilihat bagaimana cara
mengakses nilai array dengan
menggunakan pointer. Suatu pointer bertipe int hanya dapat digunakan untuk menunjuk pada variabel int. Sebab, tipe data tersebut akan
menetukan sifat pointer ketika alamat
pointet tersebut dilakukan increment. Begitu juga untuk tipe data
yang lain.
Seperti pada 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 :
Hasil program :
Pada program diatas, fungsi tambah dimana ketika
alamat suatu variabel diberikan sebagai parameter fungsi, nilai 20 akan
ditambahan pada alamat tersebut. Perbedaan parameter berupa pointer dan non-pointer adalah pada variabel non-pointer harus memasukkan nilai dari variabel tersebut. Untuk
parameter berupa pointer, cukup
memasukkan alamat variabel yang menampung nilai dengan operator (&) kedalam
parameter fungsi. Fungsi diatas, walaupun fungsi tersebut merupakan fungsi void tanpa nilai kembalian alias return, namun nilai variabel parameter
berubah.
SUMBER:
https://www.coursehero.com/file/20781416/Pengertian-Pointer/
https://www.belajarcpp.com/tutorial/cpp/pointer/
https://www.sinauarduino.com/artikel/pointer-pada-pemrograman-cpp/
http://musttaplay.blogspot.com/2016/05/pemrograman-c-pengertian-dan-contoh.html