Dokumen tersebut membahas tentang pointer dalam bahasa C dan C++. Pointer adalah variabel yang menyimpan alamat memori dari variabel lain. Pointer memungkinkan akses langsung ke nilai yang disimpan pada alamat tertentu di memori, dan dapat digunakan untuk membuat array dinamis. Operator & dan * digunakan untuk mendapatkan alamat dan nilai yang ditunjuk pointer. Pointer aritmatika memungkinkan perpindahan pointer ke alamat berikutnya.
1. By : Tenia Wahyuningrum, S.Kom., MT
ST3 Telkom Purwokerto
www.st3telkom.ac.id
Structure and Pointer
Pertemuan ke 3
Algoritma dan struktur data
2. UDT (User Defined Type)
Tipe Data Bentukan User
• Bahasa pemrograman bisa memiliki tipe data:
– Built-in : sudah tersedia oleh bahasa pemrograman
tersebut
• Tidak berorientasi pada persoalan yang dihadapi.
– UDT : User Defined Type, dibuat oleh pemrogram.
• Mendekati penyelesaian persoalan yang dihadapi
• Contoh: record pada Pascal, struct pada C/C++, class pada
Java
– ADT : Abstract Data Type
• memperluas konsep UDT dengan menambahkan
pengkapsulan atau enkapsulasi, berisi sifat-sifat dan operasi-operasi
yang bisa dilakukan terhadap kelas tersebut.
• Contoh: class pada Java
6. Bila menggunakan array biasa,
maka diperlukan tiga variable yang bebas
satu dengan yang lain, yaitu variabel
nama, alamat dan gaji.
Dengan menggunakan structure, data
tersebut diorganisasikan dalam satu
kesatuan
* Dalam pascal, structure disebut record
14. Contoh kasus
Dideklarasikan array int data[5]
Apa yang terjadi ketika data yang akan
diinputkan ternyata 10 buah, maka
langkah yang dilakukan adalah harus
mengubah programnya dan mengganti int
data[5] menjadi int data[10].
15. Cara lain untuk membuat program tersebut
adalah dengan menggunakan suatu
variabel array yang dinamis
dimana pemesanan tempat yang diperlukan
untuk menyimpan data tidak dideklarasikan
dalam program tapi dilakukan secara
runtime (ketika program berjalan).
16. Pointer
adalah built-in type di C dan C++,
dimana C++ mengambil konsep pointer
dari C.
sebenarnya sangat terkait dengan
"Abstract C Machine", yaitu
model mesin abstrak dimana program C
bekerja.
* pointer / penunjuk
17. Abstract C Machine adalah mesin abstrak
dimana mesin tersebut memiliki prosesor
untuk menginterpretasikan stream of
instruction, dan addressable memory
19. Lebih jauh lagi, terdapat asumsi bahwa
konten memori dapat di ambil dengan
waktu konstan, tidak peduli
berapa nilai alamat.
20. • Hal ini disebut dengan Random Access
Memory.
• Pointer (variabel penunjuk) juga sering di
defenisikan sebagai suatu variabel
yang berisi alamat
memori dari suatu variabel lain.
21. Alamat ini merupakan lokasi dari obyek
lain (biasanya variabel lain) di dalam
memori.
Contoh,
jika sebuah variabel berisi alamat dari
variabel lain, variabel pertama dikatakan
menunjuk ke variabel kedua.
23. &
operator menghasilkanalamatdari
operand-nya
Operator & merupakan operator alamat.
Pada saat pendeklarasian variable, user tidak
diharuskan menentukan lokasi
sesungguhnya pada memory, hal ini
akan dilakukan secara otomatis oleh kompiler dan
operating sysem pada saat run-time.
24. Jika ingin mengetahui dimana suatu
variable akan disimpan, dapat dilakukan
dengan memberikan tanda ampersand (&)
didepan variable , yang berarti
"address of". Contoh :
ted = &andy;
25. Penulisan tersebut berarti akan memberikan
variable ted alamat dari variable andy. Karena
variabel andy diberi awalan karakter
ampersand (&), maka yang menjadi pokok disini
adalah alamat dalam memory, bukan isi variable.
Misalkan andy diletakkan pada alamat 1776
kemudian dituliskan instruksi sbb :
andy = 25;
fred = andy;
ted = &andy;
26.
27. *
Menghasilkan nilai yang berbeda pada
sebuah alamat
Operator * merupakan 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".
28. contoh
beth = *ted;
(dapat dikatakan:"beth sama dengan nilai
yang ditunjuk oleh ted") beth = 25, karena
ted dialamat 1776, dan nilai yang berada
pada alamat 1776 adalah 25.
29.
30. Pointer Bertipe Void
• Pada C++ terdapat pointer yang dapat
menunjuk ke tipe data apapun, pointer
semacam ini dideklarasikan dengan tipe
void sehingga sering dikenal dengan
istilahVoid Pointer.
31. void *p;
int a=10;
double b=23.4;
char c='s';
p=&a; //p menunjuk ke tipe data int
cout<<"alamat (a=10) = "<<p<<endl;
p=&b; //p menunjuk ke tipe data double
cout<<"alamat (b=23.4) = "<<p<<endl;
p=&c; //p menunjuk ke tipe data double
cout<<"alamat (c='s') = "<<p<<endl;
34. int a[5];
int *p;
a[0]=24;
a[1]=32;
a[2]=81;
a[3]=44;
a[4]=23;
p=&a[0];
cout<<"alamat p : "<<p<<endl;
cout<<"nilai p : "<<*p<<endl;
p=p+3;
cout<<"alamat p : "<<p<<endl;
cout<<"nilai p : "<<*p<<endl;
35.
36. bila menggunakan pointer dengan
cara yang salah maka akan menyebabkan
sistem operasi
menjadi rusak.