pointer dan contoh program-pens

of 25/25
POINTER I. DEFINISI Pointer adalah variabel yang menyimpan alamat memory dari variabel yang ditunjuk. Dengan kata lain, pointer berisi alamat dari variable yang mempunyai nilai tertentu. Misalnya kita mempunyai variabel x yang bertipe int, maka untuk mendapatkan alamat dari variabel x tersebut adalah dengan menambahkan tanda & di depannya, yaitu &x. Pointer secara sederhana bisa diartikan sebagai tipe data yang nilainya mengarah pada nilai yang terdapat pada sebuah area memori (alamat memori).Namun dalam bahasa C, pointer bisa berfungsi sebagai variabel array berarti pointer sebagai penunjuk elemen array ke-0 dalam variabel C.

Post on 05-Aug-2015

172 views

Category:

Documents

2 download

Embed Size (px)

TRANSCRIPT

POINTER

I.

DEFINISI Pointer adalah variabel yang menyimpan alamat memory dari variabel yang

ditunjuk. Dengan kata lain, pointer berisi alamat dari variable yang mempunyai nilai tertentu. Misalnya kita mempunyai variabel x yang bertipe int, maka untuk mendapatkan alamat dari variabel x tersebut adalah dengan menambahkan tanda & di depannya, yaitu &x.

Pointer secara sederhana bisa diartikan sebagai tipe data yang nilainya mengarah pada nilai yang terdapat pada sebuah area memori (alamat memori).Namun dalam bahasa C, pointer bisa berfungsi sebagai variabel array berarti pointer sebagai penunjuk elemen array ke-0 dalam variabel C. Dengan demikian, ada variabel yang secara langsung menunjuk ke suatu nilai tertentu, dan variabel yang secara tidak langsung menunjuk ke nilai. Adapun bentuk umum dari pernyataan variabel pointer dalam C++ adalah : Type *variabel-name Keterangan :

Type adalah tipe dari data yang ditunjuk, bukan tipe dari pointernya

Contoh : data integer.

int *data;

berarti data adalah sebuah pointer yang menunjuk ke jenis Variabel name adalah nama variabel pointer . misal : pi dapat diartikan nama variable pointer pada variable i. Operator yang digunakan untuk pointer adalah Operator dereference dilambangkan tanda & (ampersand sign) . Operator reference dilambangkan tanda * (asterisk)

tanda * ini berfungsi sebagai penunjuk nilai dari suatu pointer sedangkan tanda& digunakan sebagai penunjuk alamat dari suatu variable. Ingat perbedaan mengisi alamat dan mengisi data pada pointer ada pada tanda bintang di depan nama pointer. Jika menggunakan tanda bintang itu artinya kita mengisi data, namun jika tidak menggunakan tanda bintang itu artinya kita mengisi alamat memori. Begitu juga dengan menampilkan nilai di layar monitor, jika kita menyertakan tanda bintang maka yang akan ditampilkan adalah data dari alamat memori yang ditunjuk pointer, namun jika tidak menggunakan tanda bintang maka yang akan ditampilkan adalah alamat memori dari pointer tersebut. A. Operator Dereference

Pada pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya pada memory. Hal ini akan dilakukan secara otomatis oleh compiler dan operating system pada saat run-time. Jika ingin mengetahui di mana suatu variable disimpan, dapat dilakukan dengan memberikan tanda ampersand (&) di depan variable, yang berarti address of.

Contoh : Buku = &bahasa; Akan memberikan variabel buku alamat dari bahasa, karena variable bahasa diberi awalan ampersand (&), maka menjadi pokok disini adalah alamat dalam memory, bukan isi variable. Misalkan bahasa diletakkan di alamat 1776 kemudian dituliskan instruksi sbb: Bahasa = 25; // nilai Bahasa 25 Sejarah = bahasa; buku = &bahasa; // nilai buku adalah alamat dari bahasa Maka hasilnya : Bahasa25 1775 Sejarah 25 1776 1776 1777 Buku

B. 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 ; BhsC = *buku; (dapat dikatakan bahwa BhsC sama dengan nilai yang ditunjuk oleh buku). BhsC = 25, karena buku di alamat 1776, dan nilai yang berada pada alamat 1776 adalah 25. OPERATOR PENUGASAN

Nilai dari suatu variabel pointer dapat disalin ke variabel pointer yang lain. Contoh: y = 65; x1 = &y; X2 = x1; POINTER KE POINTER Adalah pointer yang menunjuk ke pointer lain yang berisi alamat yang ditempati oleh pointer yang sedang menunjuk ke variable lain tersebut atau sering disebut multiple indirection . Cara mendeklarasikan adalah dengan menambah tanda asterisk (*) sebanyak dua kali di depan nama pointer yang akan dideklarasikan . Bentuk umum :

Misal : pointer P menunjuk ke alamat dari variable a bertipe integer sedangkan B dideklarasikan menunjuk alamat dari pointer P . a = 5; P=&a ; B=&P; maka **B nilainya sama dengan nilai pada alamat yang ditunjuk oleh pointer P (&a) . Dapat disimpulkan bahwa nilai dari variable a (yaitu 5) dapat diakses melalui pointer P dengan cara menuliskan *P dan menggunakan pointer B dengan cara menuliskan **B. POINTER PADA ARRAY Dalam pemrograman C, definisi array dituliskan: type_name array_name[number_of_array] misal array A bertipe integer dengan 10 anggota didefinisikan dengan: int A[10]; Maksud dari penulisan diatas, maka kita memerintahkan kompiler untuk menyediakan alamat memori sebesar 10 * sizeof(int). Bila ukuran int

adalah 4 byte, maka compiler akan mengalokasikan sebesar 10 * 4 byte = 40 byte memori untuk A. misalnya alamat awal Array A (A[0]) adalah 0xFFFF0000, maka dapat digambarkan: A[0] A[1] A[2] .. A[7] A[8] A[9] 0xFFFF0000 0xFFFF0004 0xFFFF0008 ...................... 0xFFFF001C 0xFFFF0020 0xFFFF0024

pointer pada array sesungguhnya kita juga memerintahkan pointer agar menunjuk ke alamat yang telah dialokasikan oleh array tersebut. Pada contoh diatas, bila kita mendefinisikan suatu pointer int *P: kemudian kita tunjuk ke alamat Array A P = &A[0]; maka alamat P akan menunjuk ke alamat 0xFFFF0000 Pada suatu tipe data array, variabel pointer hanya perlu menunjuk pada nama variabel arraynya saja tanpa perlu menggunakan tanda ampersand, atau menunjuk pada nama variabel array pada indeks yang ke nol nya. Nama array tanpa index adalah pointer ke elemen pertama dari array.

Untuk lebih jelasnya coba program berikut ini:

Hasil dari: for(index=0;index