RANGKUMAN POINTER PADA C
DEFINISI
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.
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 arrayberarti pointer sebagai penunjuk elemen
array ke-0 dalam variabel C.
KEGUNAAN
POINTER
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).
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.
TIPE
DATA POINTER
Dimana Tipe_data merupakan tipe dari
data yang ditunjuk, bukan tipe dari pointernya. Contoh :
1.
Mensubstitusikan
address sebuah variabel ke pointer dengan memakai address operator &
int x;
int *ptr;
ptr = &x;
2.
Mensubstitusikan
address awal sebuah array ke pointer
char t[5];
char *ptr;
ptr = t;
3.
Mensubstitusikan
address salah satu elemen array dengan address operator
char t[5];
char *ptr;
ptr = &t[3];
4.
Mensubstitusikan
address awal character string ke pointer char
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.
OPERATOR
POINTER
Ada 2 operator pointer yang dikenal
secara luas, yaitu operator & dan operator *
Operator
Alamat (&)
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;
Operator
Reference (*)
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;
DEKLARASI
POINTER
Variabel pointer dideklarasikan dengan
nama variabelnya ditulis dengan diawali karakter asterisk. Bentuk umum :
Tipe-data *nama-variabel-pointer;
Contoh : int *data; berarti data adalah
sebuah pointer yang menunjuk ke jenis data integer.
Tipe dari variable pointer menunjukkan
tipe dari data yang ditunjuknya.
INISIALISASI
VARIABEL POINTER
Pemberian harga awal pada
variable-variabel pointer dapat sekaligus dilakukan pada saat variable-variabel
tersebut dideklarasikan. Harga awal yang diberikan adalah alamat lokasi memory.
Contoh :
int i,j; int *intptr = &i; atau bisa juga
int i,j, *intptr ; intptr = &i ;
intptr variable pointer ke jenis data
integer dengan memberi harga awal berupa alamat variable i.
MENGATUR
POINTER AGAR MENUNJUK KE VARIABEL LAIN
Agar suatu pointer menunjuk ke variabel
lain, mula-mula pointer harus diisi dengan alamat dari variabel yang akan
ditunjuk. Untuk menyatakan alamat dari suatu variabel, operator & (operator
alamat, bersifat unary) bisa dipergunakan, dengan menempatkannya di depan nama
variabel. Sebagai contoh, bila x dideklarasikan sebagai variabel bertipe int,
maka
&x
berarti “alamat dari variabel x”. Adapun
contoh pemberian alamat x ke suatu variabel pointer px (yang dideklarasikan
sebagai pointer yang menunjuk ke data bertipe int) yaitu:
px = &x;
Pernyataan di atas berarti bahwa px
diberi nilai berupa alamat dari variabel x. Setelah pernyataan tersebut
dieksekusi barulah dapat dikatakan bahwa px menunjuk ke variabel x.
POINTER
MENUNJUK POINTER (DOUBLE POINTER)
Suatu pointer bisa saja menunjuk ke pointer lain. Gambar berikut
memberikan contoh mengenai pointer menunjuk pointer.
Untuk membentuk rantai pointer seperti pada gambar di atas,
pendeklarasian yang diperlukan berupa
int var_x;
int *ptr1;
int **ptr2;
Perhatikan pada deklarasi di depan:
·
var_x adalah variabel bertipe int.
·
ptr1 adalah variabel pointer yang menunjuk ke
data bertipe int.
·
ptr2 adalah variabel pointer yang menunjuk ke
pointer int.
(itulah sebabnya deklarasinya
berupa int **ptr2; )
yuhuuu...bermanfaat sekali
BalasHapusSolder uap