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; ) 

Komentar

Posting Komentar

Postingan populer dari blog ini

Aborsi menurut sudut pandang agama Hindu

Komunikasi Desain Visual