Pointer (Part 1) Dadang mulyana
Alamat dan Pointer Konsep
pointer sebenarnya cukup sederhana. Pointer sesungguhnya berisi alamat dari suatu data, bukan data sebagaimana variabel yang telah anda kenal.
1
Alamat dan Pointer Setiap
byte di dalam memori komputer memiliki sebuah alamat. Di dalam memori inilah variabel disimpan. Tetapi tentu saja pemrogram tidak perlu menyebutkan alamat dari suatu variabel secara explisit. Pada saat program dimuat di dalam memori, variabel akan diletakkan dengan sendirinya pada alamat tertentu.
Alamat dan Pointer Suatu
pointer di dalam program dimaksudkan untuk menunjuk suatu alamat memori. Misalnya kalau pint adalah pointer, dan vint adalah variabel yang terletak di memori beralamat 0xfff2, pointer pint dapat diatur agar menunjuk ke variabel vint.
2
Alamat dan Pointer
Mengetahui Alamat Suatu Variabel Alamat
suatu variabel dapat diketahui dengan mudah, caranya tambahkan operator alamat, berupa simbol & di depan nama variabel. Dengan mengirimkan ke cout, alamat dari suatu variabel akan ditampilkan ke layar.
3
Mengetahui Alamat Suatu Variabel //program75.cpp #include
#include void main() { int bil1 = 5; float bil2 = 7.5; double bil3 = 17.777; cout<<"Isi variabel : "<<endl; cout<<"bil1 = "<
variabel : "<<endl; "<<&bil1<<endl; "<<&bil2<<endl; "<<&bil3<<endl;
}
Mengetahui Alamat Suatu Variabel Perlu
diketahui, notasi 0x pada hasil program di depan menyatakan notasi heksadesimal. Pada C++, tanda & juga dipakai untuk referensi (alias dari suatu variabel).
4
Mendefinisikan Variabel Pointer Format
:
tipe_data *nama_variabel
tipe_data
dapat berupa sembarang tipe data seperti halnya variabel bukan pointer. nama_variabel adalah variabel pointer.
Mengisi Variabel Pointer Supaya variabel pointer menunjuk ke variabel lain, mulamula-mula harus diisi dengan alamat dari variabel yang hendak ditunjuk. ditunjuk. Misalnya terdapat pendefinisian seperti berikut :
int vint = 55; int *pint;
Variabel pint dapat diatur agar menunjuk ke vint dengan cara sebagai berikut : pint = &vint;
Pernyataan diatas berarti : “pint diisi dengan alamat dari vint” vint”.
5
Mengisi Variabel Pointer //program76.cpp #include #include void main() { int vint = 55; int *pint; pint = &vint; //pointer menunjuk ke vint cout<<"Alamat vint = "<<&vint<<endl; cout<<"Isi pint = "<
Mengisi Variabel Pointer Pada
contoh di depan :
cout<<"pint = "<
Baris
tersebut ternyata menampilkan isi dari pointer itu sendiri, bukan isi dari variabel vint.
6
Mengakses Nilai Yang Ditunjuk Pointer
Berdasarkan contoh di depan, depan, nilai dari vint dapat diakses melalui pint setelah pernyataan dibawah ini dijalankan. dijalankan. pint = &vint;
Cara mengaksesnya adalah dengan melibatkan operator “tak langsung” langsung” yang berupa simbol * dan diletakkan di depan nama variabel pointer. Contoh : *pint;
Berarti “nilai yang ditunjuk oleh pint” pint”.
Mengakses Nilai Yang Ditunjuk Pointer //program77.cpp #include #include void main() { int vint = 55; int *pint; pint = &vint;
//pointer menunjuk ke vint
cout<<"Isi vint = "<
7
Mengakses Nilai Yang Ditunjuk Pointer Program
di depan menunjukkan pengaksesan terhadap vint dapat dilakukan melalui *pint. Contoh berikut menunjukkan isi vint diubah melalui *pint.
Mengakses Nilai Yang Ditunjuk Pointer //program78.cpp #include #include void main() { int vint = 55; int *pint; pint = &vint; //pointer menunjuk ke vint cout<<"Isi vint semula = "<
9
Pointer Void
Pada program di depan, depan, bentuk berikut perlu diberikan : *(int*)ptr *(float*)ptr
Ini disebabkan C++ tidak tahu maksud *ptr mengingat ptr adalah pointer void. Cara ini bukan hanya berlaku jika kita bermaksud mengambil nilai yang ditunjuk oleh ptr tapi juga ketika kita mengubahnya. mengubahnya. Seperti contoh program berikut :
Pointer Void //program80.cpp #include #include void main() { int bilangan = 55; void *ptr; ptr = &bilangan; cout<<"bilangan semula : "<
10