Pointer Dalam Bahasa
C++
A. Pengertian Pointer
Pointer adalah sebuah variabel yang
berisi alamat lain. Suatu pointer dimaksudkan untuk menunjukan ke suatu alamat
memori sehingga alamat dari suatu variabel dapat diketahui dengan mudah.Intinya:
a. Pointer adalah suatu variabel yang menunjuk ke alamat memory variabel yang lainnya.
b. Variabel pointer berisi suatu alamat (alokasi memory).
a. Pointer adalah suatu variabel yang menunjuk ke alamat memory variabel yang lainnya.
b. Variabel pointer berisi suatu alamat (alokasi memory).
Pointer adalah built-in type di C dan C++, dimana C++
mengambil konsep pointer dari C. Pointer sebenarnya sangat terkait dengan
"Abstract C Machine", yaitu model mesin abstrak dimana program C
bekerja. Abstract C Machine adalah mesin abstrak dimana mesin tersebut memiliki
prosesor untuk menginterpretasikan stream
of instruction, dan addressable memory
yang terbagi kedalam 3 bagian :
1. automatic memory
2. static memory
3. free memory.
Automatic
memory, static memory dan free memory.
Addressable memory adalah memory yang konten-nya dapat
diambil jika diketahui alamatnya. Lebih
jauh lagi, terdapat asumsi bahwa konten memori dapat di ambil dengan
waktu konstan, tidak peduli berapa nilai alamat.Hal ini disebut dengan Random
Access Memory.
Pointer adalah sebuah variabel yang
berisi alamat lain. Suatu pointer dimaksudkan untuk
menunjukan ke suatu alamat memori sehingga alamat dari suatu variabel dapat
diketahui dengan mudah. Arti pointer
dalam bahasa sehari-hari adalah putunjuk atau bisa di bilang penentu atau
pointer secara sederhana bisa diartikan sebagai tipe data yang nilainya
mengarah pada nilai yang terdapat pada sebuah area memori (alamat memori).namun
dalam
Dalam bahasa C, Pointer bisa berfungsi
sebagai variabel array berarti
pointer
sebagai penunjuk elemen array ke-0 dalam variabel C.
B. Fungsi
Pointer
Adapun fungsi dari pointer yaitu :
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. 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 :
a. Mengirimkan
“Parameter yang berupa variabel” ke dalam
fungsi, artinya nilai variabel bisa diubah di dalam fungsi.
b. 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.
c. Karena pointer dapat
meningkatkan kinerja untuk operasi yang dilakukan secara berulang. Dengan
syarat Kalau mendeklarasikan pointer kedalam array, tidak boleh menggunakan
tanda bintang.
d. 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.
C. Penggunaan Awal
Pointer
Tipe Data Pointer :
Dimana
Tipe_data merupakan tipe dari data yang ditunjuk, bukan tipe dari pointer-nya.
Contoh :
1. Mensubstitusikan address
sebuah variabel ke pointer dengan memakai
address
operator &.
a.
int x;
b. int *ptr;
c.
ptr =
&x;
|
2. Mensubstitusikan address awal sebuah array ke
pointer
a. char t[5];
b. char *ptr;
c. ptr = t;
|
3. Mensubstitusikan address salah satu elemen array
dengan address operator char t[5] ;
a.
char *ptr; ptr = &t[3]; |
4. Mensubstitusikan address awal character string ke
pointer char
a. char *ptr; ptr =
"jakarta"
|
5. Mensubstitusikan NULL pada pointer.
NULL ada pointer
kosong, menunjukkan suatu status dimana pointer itu belum diinisialisasikan
dengan sebuah address tertentu.
6.Memakai fungsi MALLOC.
D. Operator Pointer
Ada
2 operator pointer yang dikenal secara luas, yaitu operator & dan operator
*.
1.
Operator &
Operator & merupakan operator alamat. Pada saat
pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya
pada memory, hal ini akan dilakukan secara otomatis oleh kompiler dan operating
sysem pada saat run-time. Jika ingin mengetahui dimana
suatu variable akan disimpan,
dapat dilakukan dengan memberikan tanda ampersand
(&) didepan variable , yang berarti "address of".
Contoh
: ted = &andy; Penulisan tersebut berarti akan memberikan
variable ted alamat dari variable andy. Karena variabel andy diberi awalan
karakter ampersand (&), maka yang menjadi pokok disini adalah alamat dalam
memory, bukan isi variable. Misalkan andy diletakkan pada alamat 1776 kemudian
dituliskan instruksi sbb : andy = 25; fred = andy; ted = &andy;
2.
Operator *
Operator * merupakan operator reference. Dengan menggunakan
pointer,kita dapat mengakses nilai yang tersimpan secara langsung dengan
memberikan awalan operator asterisk (*) pada identifier pointer, yang berarti
"value pointed by".
Contoh
: beth = *ted;
(dapat
dikatakan:"beth sama dengan nilai yang ditunjuk oleh ted") beth = 25,
karena ted dialamat 1776, dan nilai yang berada pada alamat 1776 adalah 25.
Ekspresi dibawah ini semuanya benar, perhatikan :
andy
= 25; &andy = 1776;
ted
= 1776; *ted = 25;
Ekspresi
pertama merupakan assignation bahwa andy = 25;.
Kedua,
menggunakan operator alamat (address/derefence
operator (&)), sehingga akan mengembalikan alamat dari variabel
andy.
Ketiga
bernilai benar karena assignation untuk ted adalah ted = &andy;.
Keempat
menggunakan reference operator (*) yang berarti nilai yang ada pada alamat yang
ditunjuk oleh ted, yaitu 25.
Maka
ekspresi dibawah ini pun akan bernilai benar : *ted = andy;
E. Macam – macam Pointer
1.
Pointer Bertipe Void
Pada C++ terdapat pointer yang dapat menunjuk ke tipe data
apapun, pointer semacam ini dideklarasikan dengan tipe void sehingga sering
dikenal dengan istilah Void Pointer. Berikut ini contoh listing program yang
menggunakan void pointer.
2.
Pointer Aritmetika
Elemen-elemen array biasanya diakses melalui indeksnya,
sebenarnya ada cara lain yang lebih efisien, yaitu dengan menggunakan pointer.
Pointer semacam ini disebut dengan istilah pointer aritmetika. Konsep dasar
dari pointer aritmetika ini adalah melakukan operasi aritmetika terhadap
variabel yang bertipe pointer.
3.
Pointer NULL
Pada saat program dijalankan,
pointer akan menunjuk ke alamat acak pada
memori,sehingga diperlukan inisialisasi agar hal tersebut tidak terjadi. Dalam
C++ terdapatsebuah cara untuk membuat pointer tidak menunjuk ke alamat manapun,
yaitu denganmengisikan ponter tersebut dengan nilai NULL. Karena hal inilah
maka pointer tersebutsering dinamakan pointer NULL (NULL Pointer). Sebagai
contoh kita mempunyai pointer p, dan kita
ingin melakukan inisialisasi pada pointertersebutdengan
nilai NULL maka sintaknya adalah sebagai berikut. P=NULL;
F. Contoh Program
#include <iostream>
#include<string>
using namespace std;
int main ()
{
int *ptrArray;
int A[5] = {1,3,5,7,9};
ptrArray = A;
//cout << "Nilai dari ptrArray :" <<ptrArray=2<<endl;
for(int i=0 ; i<=4 ; i++)
{
cout << A[i] <<" ";
}
cout <<"\n PAKAI POINTER" <<endl;
for(int i=0 ; i<=4 ; i++)
{
cout << *ptrArray+i<<" ";
}
}
|
G. Hasil Running
REFERENSI:
Tidak ada komentar:
Posting Komentar