Variabel pointer sering dikatakan sebagai variabel yang
menunjuk ke obyek lain. Pada kenyataan
yang sebenarnya, variabel pointer berisi alamat dari suatu obyek lain (yaitu
obyek yang dikatakan ditunjuk oleh pointer).
Sebagai contoh, px adalah variabel pointer dan x adalah
variabel yang ditunjuk oleh px.
Kalau x berada pada alamat memori (alamat awal) 1000, maka px
akan berisi 1000.
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
:
|
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.
Mengakses Isi Suatu Variabel Melalui Pointer
Jika suatu variabel sudah
ditunjuk oleh pointer, variabel yang ditunjuk oleh pointer tersebut dapat
diakses melalui variabel itu sendiri (pengaksesan langsung) ataupun melalui
pointer (pengaksesan tak langsung). Pengaksesan
tak langsung dilakukan dengan menggunakan operator indirection (tak
langsung) berupa simbol * (bersifat unary). Contoh penerapan operator * yaitu :
*px
yang menyatakan “isi atau nilai variabel/data yang ditunjuk oleh
pointer px” . Sebagai contoh jika
y bertipe int, maka sesudah dua pernyataan berikut
|
y akan berisi nilai yang sama dengan
nilai x.
Kedua pernyataan di atas
|
sebenarnya dapat digantikan dengan sebuah pernyataan berupa
y = x;
Seandainya pada program di atas tidak terdapat pernyataan
|
namun terdapat pernyataan
|
maka y tidaklah berisi nilai x, sebab px belum
diatur agar menunjuk ke variabel x.
Hal seperti ini harap diperhatikan.
Kalau program melibatkan pointer, dan pointer belum diinisialisasi, ada
kemungkinan akan terjadi masalah yang dinamakan “bug” yang bisa mengakibatkan
komputer tidak dapat dikendalikan (hang).
Selain itu tipe variabel pointer dan tipe data yang ditunjuk harus
sejenis. Bila tidak sejenis maka akan
terjadi hasil yang tidak diinginkan.
Untuk lebih jelasnya lihat gambar berikut.
3.
Dasar
Penggunaan Pointer
Dalam
sistem komputer, semua bagian di memory dapat diasosiasikan dengan suatu nilai
numerik yang disebut address atau alamat di memory. Dengan demikian,
setiap bagian di memory dapat diakses menggunakan alamat. Pointer adalah tipe
data dalam bahasa pemrograman yang berisi alamat di memory tersebut. Ini
berarti pointer adalah sebuah tipe data yang isinya menunjuk ke data lain di
memory.
Dalam
bahasa pemrograman C++, khususnya pada tingkat yang lebih lanjut, peran pointer sangatlah
penting, meskipun di sisi lain dapat menimbulkan malapetaka. Pointer memiliki
kekuatan besar dalam membangun struktur data dan dapat dimanfaatkan untuk
mengelola memori secara akurat. Di sisi lain, dalam penggunaan pointer, sangat
mudah terjadi salah pakai yang bisa menimbulkan error yang sulit dicari
penyebabnya, yaitu access violation. Karena peran pointer yang sangat besar
dalam menghasilkan program yang efektif, seseorang tidak akan bisa menjadi
programmer handal bila tidak memiliki pengetahuan yang baik tentang pointer.
Operator Pointer ada dua, yaitu :
Ø Operator &
Operator
& bersifat unary (hanya memerlukan satu operand saja).
Operator
& menghasilkan alamat dari operandnya.
Ø Operator *
Operator
* bersifat unary (hanya memerlukan satu operand saja).
Operator
* menghasilkan nilai yang berada pada sebuah alamat.
Operasi Aritmatika
Suatu
variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer
saja. Operasi yang biasa dilakukan
adalah operasi penambahan dan pengurangan.
Operasi penambahan dengan suatu nilai
menunjukkan lokasi data berikutnya (index
selanjutnya) dalam memori. Begitu
juga operasi pengurangan.
Contoh:
#include
<conio.h>
#include
<iostream.h>
main(void)
{
int yofrie = 93;
int *hadiansyah ;
clrscr();
cout << "Nilai awal yofrie =
" << yofrie << endl;
hadiansyah = &yofrie;
cout << "Nilai awal hadiansyah =
";
cout
<< *hadiansyah << endl;
*hadiansyah = 70;
cout << "Nilai hadiansyah
sekarang = ";
cout
<< *hadiansyah << endl;
getch();
return 0;
}
POINTER DAN STRING
Contoh
#include <iostream.h>
#include <conio.h>
void misteri1(char *);
main() {
char string[] = "STMIK Amikom
Purwokerto";
cout<< "Selamat Datang Di
" << string <<"\n" ;
misteri1(string);
cout<<"Panji Mahasiswa
"<<string;
getch();
}
void misteri1(char *s) {
while ( *s != '\0' ) {
if ( *s >= 'a' && *s
<= 'z' )
*s -= 32;
++s;
}
}
0 komentar:
Post a Comment