Page 149 - PEMROGRAMAN DASAR MENGGUNAKAN C
P. 149
alamat dari suatu variabel di dalam bahasa C. Caranya adalah dengan menggunakan
operator & di depan nama variabel tersebut. Sebagai contoh, apabila kita memiliki
variabel X yang bertipe int dan pointer P yang akan menujuk ke tipe data int, maka
sintak program yang akan digunakan untuk mendapatkan alamat dari variabel X tersebut
dan memasukkannya ke dalam pointer P adalah sebagai berikut.
int X; /* Mendeklarasikan variabel X dengan tipe int */
int *P; /* Mendeklarasikan pointer P yang akan menunjuk
ke tipe int */
P = &X; /* Mendapatkan alamat dari variabel X dengan cara
menuliskan &X dan
menyimpan alamat tersebut ke dalam pointer P */
Setelah mengetahui hal di atas, mungkin Anda akan berfikir bagaimana cara untuk
mendapatkan nilai apabila yang diketahui hanya alamat yang ditempatinya saja?
Jawabnya adalah dengan melakukan dereference pointer. Menurut definisinya,
dereference pointer adalah proses pengambilan nilai dari suatu alamat memori melalui
sebuah pointer. Adapun cara untuk mengambil nilai tersebut adalah dengan
menambahkan tanda asterisk (*) di depan nama pointer tersebut. Sebagai contoh apabila
kita memiliki pointer P yang telah menunjuk ke alamat tertentu, kemudian kita ingin
mengambil nilai yang terdapat di dalam alamat tersebut untuk dimasukkan ke dalam
variabel Y, maka sintak yang harus dituliskan adalah sebagai berikut.
Y = *P;
Agar Anda dapat lebih memahami tentang konsep pointer, perhatikan gambar di bawah
ini yang akan menunjukkan hubungan pointer dengan sebuah variabel.
Alamat memori nilai …
Pointer P 0065FDFC X=10 X=10
… … void …
Gambar 7.3. Pointer yang menunjuk ke alamat memori tertentu
Pada gambar di atas, terdapat pointer yang sedang menunjuk ke suatu alamat (misalnya
0065FDFC), dimana alamat tersebut ditempati oleh variabel X yang bernilai 10, maka
untuk mendapatkan nilai 10 tersebut kita dapat menggunakan dereference pointer, yaitu
dengan menuliskan *P. Dengan demikian, kita dapat menyimpulkan bahwa apabila
P = &X; /* Keduanya menyimpan alamat (yaitu 0065FDFC) */