Dokumen tersebut membahas tentang konsep pointer dalam bahasa pemrograman C++. Pointer merupakan variabel yang menyimpan alamat memori dari variabel lain. Pointer dapat digunakan untuk mengakses dan mengubah nilai variabel yang ditunjuknya. Terdapat beberapa jenis pointer seperti pointer berdasarkan tipe data dan pointer void.
2. Alamat dan Pointer
Konsep pointer sebenarnya cukup sederhana.
Pointer sesungguhnya berisi alamat dari suatu data,
bukan data sebagaimana variabel yang telah anda
kenal.
3. 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.
4. 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.
6. 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.
7. Mengetahui Alamat Suatu Variabel
#include <iostream.h>
#include <conio.h>
void main()
{
int bil1 = 5;
float bil2 = 7.5;
double bil3 = 17.777;
cout<<"Isi variabel : "<<endl;
cout<<"bil1 = "<<bil1<<endl;
cout<<"bil2 = "<<bil2<<endl;
cout<<"bil3 = "<<bil3<<endl;
cout<<endl;
cout<<"Alamat variabel : "<<endl;
cout<<"bil1 = "<<&bil1<<endl;
cout<<"bil2 = "<<&bil2<<endl;
cout<<"bil3 = "<<&bil3<<endl;
getch();
}
8. 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).
9. Mendefinisikan Variabel Pointer
Format :
tipe_data dapat berupa sembarang tipe data seperti
halnya variabel bukan pointer.
nama_variabel adalah variabel pointer.
tipe_data *nama_variabel
10. Mengisi Variabel Pointer
Supaya variabel pointer menunjuk ke variabel lain, mula-mula harus
diisi dengan alamat dari variabel yang hendak ditunjuk.
Misalnya terdapat pendefinisian seperti berikut :
Variabel pint dapat diatur agar menunjuk ke vint dengan cara sebagai
berikut :
Pernyataan diatas berarti : pint diisi dengan alamat dari vint.
int vint = 55;
int *pint;
pint = &vint;
12. Mengisi Variabel Pointer
Pada contoh di depan :
Baris tersebut ternyata menampilkan isi dari pointer
itu sendiri, bukan isi dari variabel vint.
cout<<"pint = "<<pint<<endl;
13. Mengakses Nilai Yang Ditunjuk Pointer
Berdasarkan contoh di depan, nilai dari vint dapat diakses
melalui pint setelah pernyataan dibawah ini dijalankan.
Cara mengaksesnya adalah dengan melibatkan operator
tak langsung yang berupa simbol * dan diletakkan di
depan nama variabel pointer. Contoh :
Berarti nilai yang ditunjuk oleh pint.
pint = &vint;
*pint;
14. #include <iostream.h>
#include <conio.h>
void main()
{
int vint = 55;
int *pint;
pint = &vint; //pointer menunjuk ke vint
cout<<"Isi vint = "<<vint<<endl;
cout<<"Alamat vint = "<<&vint<<endl;
cout<<"Isi pint = "<<pint<<endl;
cout<<"Nilai yang ditunjuk oleh pint : "<<*pint<<endl;
getch();
}
15. Mengakses Nilai Yang Ditunjuk Pointer
Program di depan menunjukkan pengaksesan
terhadap vint dapat dilakukan melalui *pint.
Contoh berikut menunjukkan isi vint diubah melalui
*pint.
16. #include <iostream.h>
#include <conio.h>
void main()
{
int vint = 55;
int *pint;
pint = &vint; //pointer menunjuk ke vint
cout<<"Isi vint semula = "<<vint<<endl;
*pint = 77;
cout<<"Isi vint sekarang = "<<vint<<endl;
getch();
}
17. Pointer Void
Pada contoh-contoh program di depan telah ditunjukkan
pointer yang menunjuk ke tipe data tertentu.
Sebenarnya juga dimungkinkan untuk membuat pointer
tak bertipe.
Caranya yakni dengan meletakkan kata kunci void di
bagian penentu tipe pointer. Contoh :
Suatu pointer void seperti contoh diatas dapat digunakan
untuk menunjuk ke sembarang tipe data.
void *ptr;
18. #include <iostream.h>
#include <conio.h>
void main()
{
int bil1 = 55;
float bil2 = 33.45;
void *ptr;
ptr = &bil1; //bisa menunjuk ke int
cout<<"Nilai yang ditunjuk ptr : "<<*(int*)ptr<<endl;
ptr = &bil2; //bisa menunjuk ke float
cout<<"Nilai yang ditunjuk ptr : "<<*(float*)ptr<<endl;
getch();
}
19. Pointer Void
Pada program di depan, bentuk berikut perlu
diberikan :
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.
Seperti contoh program berikut :
*(int*)ptr
*(float*)ptr
20. #include <iostream.h>
#include <conio.h>
void main()
{
int bilangan = 55;
void *ptr;
ptr = &bilangan;
cout<<"bilangan semula : "<<bilangan<<endl;
*(int*)ptr = 77; //mengubah nilai bilangan melalui ptr
cout<<"bilangan sekarang : "<<bilangan<<endl;
getch();
}